出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() |
[2379] ファイルアップロードに関して |
投稿者:もさぎさん 2002/07/30 19:49:30 |
メール送信の処理を作成しています。 機能概要は、クライアントで添付ファイルを複数指定し、 「メール送信ボタン」押下で指定された添付ファイルを添付して メールを送信したいのですが、現在のところ以下の機能は作成済みです。 @<INPUT type="file" 〜>でファイルを指定する機能を作成 A「追加」ボタンを作成し、ボタン押下で、@で指定されたパスを 同一ページ上にリストとして表示 B「削除」ボタンでリストより選択されたパスを削除 (チェックボックスを設け、ONで対象を感知しています) 以上の機能に「メール送信」ボタン押下時に指定された クライアントのファイルをサーバの指定フォルダにアップロードし、 メールに添付する機能を付け加えたいのですが、 調べたところ<FORM>タグに「ENCTYPE="multipart/form-data"」を 追加しなければならないそうですね。 そこで、早速そのようにしてみたところ、上記ABの処理が 動かなくなってしまいました。 上記の処理で「追加」「削除」をする度に毎回自分自身に送信して 処理をしているせいかと思うのですが、 「ENCTYPE="multipart/form-data"」を追加する事によって 上記@ABの処理を有効にしつつ、ファイルをアップロードするには どうしたら良いのでしょうか? ASPは初心者の為、上手く説明できず済みません。 説明の到らない分、ソースを一部載せますので、 どなたかご教授下さい。 宜しくお願い致します。 ------------------------------------ '■「追加」「削除」「メール送信」でモードを設定し、 ' 処理を分岐させています '■指定されたファイルを同一ページ上にリストとして ' 追加/削除する為にセッションに格納ししています Select Case intMode '追加処理 Case 1 If intFCnt < 20 Then ⇒ファイル数を判定しています If strPath <> "" Then 'セッションに格納 Session("strPath" & intFCnt) = strPath 'ファイル数のカウントアップ intFCnt = intFCnt + 1 End if Else Response.write"ファイルは20コまでです。" End if '削除処理 Case 2 For intidx = 1 To intFCnt 'チェックボックスの値を取得する intChk = CStr(Request.Form("chk_" & intidx)) If intChk <> "on" Then ⇒ONの場合は削除 '変数再定義 intNewFCnt = intNewFCnt + 1 Session("strPath" & intNewFCnt - 1) = Session("strPath" & intidx - 1) End if Next intFCnt = intNewFCnt 'メール送信処理 Case 3 '添付ファイルの編集 For intidx = 1 To intFCnt strFile = Session("strPath" & intidx - 1) strFileString = strFileString & strFile & vbTab Next 'メール送信処理へ Call Send_Mail(strFileString,strComment) ⇒※へ End Select --------------------------------------- 'メール送信処理(※) --------------------------------------- svname = "XXXX@XXX.co.jp" mailto = "<XXXX@XXX.co.jp>" body = "本文です" files = strFileString ⇒上で指定した添付ファイルリストです mailfrom = "XXXX@XXXX.co.jp" subj = "メール送信テスト(添付あり)" 'メール送信 Set bobj = Server.CreateObject("BASP21") rc = bobj.SendMail(svname,mailto,mailfrom, subj,body,files) |
[2391] Re:ファイルアップロードに関して |
投稿者:北岳さん 2002/07/31 15:09:53 |
私はメールは全く素人ですが、今回はファイルアップロードがらみの問題と思いますので、以下解説をば。 <input type="file">でアップロードするファイルを選択する場合、 --------------- @クライアントが参照ボタンを押し、自分のマシンのファイルのリストからファイルを選択します。 A選択されたファイル名が、参照ボタンの左のテキストボックスに書き込まれます。 B<form 〜> </form>内に作ったsubmitボタンを押すと、上のテキストボックス内のファイルがサーバに送られます。 Cformに、 ENC(このフォームから送られる封筒の中身の)TYPE(タイプは)= "multipart(複数の区画に分かれた)/form-data(フォームデータです)" と書いておくと、 D受け取ったBASP21は、封筒の中から必要な区画をチョビチョビ取り出します。 (このサイトを「チョビチョビ」で検索してみて下さい。) --------------- 複数のファイルを一括して送りたい場合は、 <form action=〜 ENCTYPE="multipart/form-data"> <input type="file" name="nm1" size=50> <input type="file" name="nm2" size=50> ・・・ <input type="file" name="nm20" size=50> <input type="submit"> </form> と書けば可能で、basp21がnm1,nm2・・・と、ちょびちょび取り出せます。 が、いずれにせよ、サーバに送れるのは、 <input type="file">で作られたテキストボックス内のファイルだけです。 それを別のリストボックスなどに移しても、そこからはアップロードできません。■ (ご質問の、「ENCTYPE云々を記述したからアップロードできなくなった」、というのは解釈違いで、 記述したからアップロードする環境が整ったものの、別の問題■が出たわけです。) じゃあ、クライアントが一旦選択したファイルを増減したい場合、どうすればいいかと申しますと、自分の知る限り、良い方法がありません。 案1:ActiveXコンポーネントをクライアントにインストールしてもらうことが可能なら、 http://www.hi-ho.ne.jp/babaq/bfup.html 案2:<input type="file">を並べて書いて、複数ファイルを一括アップの形に持っていく方法を工夫する。 ただし、このテキストボックス内に、VBなどのスクリプトで文字を書き込めないのが泣き所(クライアントが画面上でDrag & Dropで文字を落とし込むことは可能)で、クライアントの手を再度煩わせることになります。 他にうまい案があるでしょうか>all |
TreeBBS For ASP V.0.1.3 |