C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 複数ファイルアップロードのパスの取得


(過去ログ 78 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■46410 / inTopicNo.1)  複数ファイルアップロードのパスの取得
  
□投稿者/ とりの (23回)-(2010/02/02(Tue) 10:13:15)

分類:[レガシ ASP] 

今、レガシーASPでファイルのアップロード機能を作っているのですが
複数ファイルアップロードについてよく分からない部分があります。

まず単体アップロード時は <input type="file" 〜 でファイルを指定し
以下の aspファイル に submit しています。


Dim bytes
Dim binary
Dim basp
Dim fileFullPath
Dim fileSize
Dim fileName
Dim fileLength


bytes=Request.TotalBytes
binary=Request.BinaryRead(bytes)

set basp=server.createobject("basp21")

Dim name
name=basp.Form(binary,"yourname")

'fileFullPath
fileFullPath = basp.FormFileName(binary,"fileFullPath")

fileSize=basp.FormFileSize(binary,"fileFullPath")

fileName=Mid(fileFullPath,InstrRev(fileFullPath,"\")+1)

fileLength=basp.FormSaveAs(binary,"fileFullPath",Server.MapPath("\") & "\hoge\hoge\" & fileName)


ここから、複数ファイルアップロードするために jQuery Multiple File Upload Plugin
を使ってみることにしました。
http://javascript.webcreativepark.net/library/jquery_multiple_file_upload_plugin

しかし どのように値を
basp.FormFileName(binary,"fileFullPath")
に渡したら良いか分かりません。

jQuery Multiple File Upload Plugin を使う場合は basp は使えないのでしょうか。

もしご存じの方がいらっしゃいましたら、どのように指定すればよいかご教示ください。
宜しくお願い致します。

引用返信 編集キー/
■46420 / inTopicNo.2)  Re[1]: 複数ファイルアップロードのパスの取得
□投稿者/ もりお (175回)-(2010/02/02(Tue) 17:26:01)
No46410 (とりの さん) に返信

> しかし どのように値を
> basp.FormFileName(binary, "fileFullPath")
> に渡したら良いか分かりません。

"fileFullPath" に input コントロールの name 属性をセットすると善いのではないでし
ょうか。ただし、アップロードするファイルを1つしか取得できなさそうです。

> jQuery Multiple File Upload Plugin を使う場合は basp は使えないのでしょうか。

jQuery Multiple File Upload Plugin は同じ name 属性の input コントロールを動的に
追加して
<input type="file" class="multi" name="file1" /><br />
<input type="file" class="multi" name="file1" /><br />
...

BASP21 では name 属性ごとに1つしか取得できない。
basp.FormFileName(binary, "file1")

というのが問題の原因かなと思ったり思わなかったりです。

HTML において name 属性が同じになる。
BASP21 において name 属性が同じ場合は1つしか取得できない。
どちらかを攻略できれば良さそうです。

onsubmit 時に input コントロールの name 属性を個別になるようセットし直してみては
いかがでしょうか。

function FormatUploadNames() {
	var number = 1;
	var files = $("input[type=file]");

	for (var i = 0; i < files.length; i++) {
		var file = $(files[i]);
		
		if (!file.val()) {
			continue;
		}
	
		file.attr("name", "file" + number);
		number++;
	}
}

<body>
	<form ... onsubmit="FormatUploadNames()">
		<input type="file" class="multi" /><br />
		<input type="submit" value="upload" />
	</form>
</body>

BASP21 側ではセットし直した name 属性を探ってみる

Dim i
For i = 1 To 10
	Dim fileName
	fileName = basp21.FromFileName(binary, "file" & i)
	...
Next

引用返信 編集キー/
■46424 / inTopicNo.3)  Re[2]: 複数ファイルアップロードのパスの取得
□投稿者/ とりの (24回)-(2010/02/02(Tue) 18:46:20)
No46420 (もりお さん) に返信
> function FormatUploadNames() {
ありがとうございます。助かりました。

正直
http://d.hatena.ne.jp/serupi9/20090830/1251648622
を見て、唸っていたところだったので大変助かりました。

お陰さまで無事にアップロードすることが出来ました。
ありがとうございました。


恥はついでに「$」はオブジェクトの意味でしょうか。

兎にも角にも、ありがとうございました。
解決済み
引用返信 編集キー/
■46427 / inTopicNo.4)  Re[3]: 複数ファイルアップロードのパスの取得
□投稿者/ もりお (176回)-(2010/02/02(Tue) 19:32:50)
No46424 (とりの さん) に返信

> http://d.hatena.ne.jp/serupi9/20090830/1251648622

ぬあ...オプションを指定するだけでよかったのですか。
$("input[type=file].multi").MultiFile({namePattern:'$name$i'});

> 恥はついでに「$」はオブジェクトの意味でしょうか。

なんだか私の方が恥な予感ですが $ は jQuery のオブジェクトです。

jQuery 1.3.2 日本語リファレンス
http://semooh.jp/jquery/

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -