- PR -

複数のExcelファイルをアップロードのエラー

投稿者投稿内容
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2004-08-18 20:21
たびたび、お世話になっております。

今回は複数のExcelファイルをアップロードの際に発生するエラー
「Content-Type ヘッダーをこの要求に対して
multipart type に設定することはできません」で困っております。

Dim webCl As New System.Net.WebClient
webCl.UploadFile("パス/A.xls","POST", "パス/A.xls") ’←かなり省略

というプログラミングで、ひとつのExcelファイルをアップロードする
ことができました。

(エラーからすると、.NETのエラーではないような気がしますが)

HTMLの<form>タグでMIMEタイプをいろいろ試しているのですが
どうもうまくできません。

.NET特有な設定ってあるんでしょうか?
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2004-08-18 21:02
私の理解が悪いのかもしれませんが、
質問の要点が私には把握できません。

WebClientとしてUploadするなら、n個のファイル分ループ処理すれば
いいだけの話で<form>タグとかHTMLだとか、MIMEタイプは
関係ない話だと思いますが?

それとも、サーバーサイドの処理の中で別のサーバに更にファイルを
POSTしたいのでしょうか?で、あれば、まだ何となくやりたいことは
分かるのですが?


<HTML>
<FORM encrypt type="multipart/form-data">
</HTML>

という世界の話で複数Uploadしたいなら、
WebClientを使用する話は多分、違うと思うのですが・・・。

私の理解が間違ってます?

みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2004-08-19 09:02
質問の仕方が悪くてすみません。

複数のファイルをアップロードする場合、

1個目のファイルをアップロードするには問題ないのですが、
2個目のファイルアップロードのところで以下のエラーが発生します。

「Content-Type ヘッダーをこの要求に対して
multipart type に設定することはできません」

HTMLは
<form id="Form1" runat="server" method="post" action=Test.aspx enctype="multipart/form-data" >

enctypeの部分をいろいろ試したもののエラーになるのです。

ASP.NETでは複数のファイルのアップロードが無理なんて
ことないですよね。。。うーん。

※忘れていましたが、ASP.NET(VB.NET)です。


[ メッセージ編集済み 編集者: みのる 編集日時 2004-08-19 09:05 ]
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2004-08-19 09:43
私自身は、ASP.NETのクライアント側(通常はWebブラウザですよね)で
WebClientを使用したことがありません。
(理由)職場内イントラとかではない限り、 .net Frameworkが入っている保証無し
(理由)入っている前提でも、認証が必要なはず。

WebClientを使用する局面は、
・WindowsFormアプリ
・Consoleアプリ
・又は、サーバサイドでUploadされてきたファイルを、
 別のサーバに更に転送
と考えています。(違っていたら誰か指摘して!)

みのるさんの .aspxの中に記述するスタイルで
ファイルをアップロードする場合、
WebClientではなく、HTMLInputFileクラスを使うはずですが?
(HTMLInputFileクラスを使って複数ファイルをアップロードされた
 ファイルをHTTPPostedFileクラスで処理した経験はあります。)

でも、それにしても1個はできているという話が、謎ですが。
私が抜本的に間違っているかもしれないので、
第三者の査定(?)をお願いします。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2004-08-19 15:03
platiniさん、いろいろありがとうございます。

PostedFile.SaveAsを使って
ファイルのアップロードをしたことがあります。

今回はWEBフォームのボタンをクリックした際に
ローカルの決まったフォルダ内のエクセルファイルを全てを
サーバーの決まったフォルダ内にまとめてアップロードしたいのです。

PostedFile.SaveAsを使用すると、
ユーザがアップデートしたいファイルをひとつ選択しないと
いけない仕様なので、HTMLInputFileクラスの使用しませんでした。
(違っていたらご指摘ください)

ちなみに、
WebClientを使った
ローカルの決まったフォルダ内のエクセルファイルを全てを
サーバーの決まったフォルダ内にダウンロードはできました。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2004-08-19 15:34
platiniさん、いろいろありがとうございます。

PostedFile.SaveAsを使って
ファイルのアップロードをしたことがあります。

しかし今回は、WEBフォームのボタンをクリックした際に
ローカルの決まったフォルダ内のエクセルファイルを全てを
サーバーの決まったフォルダ内にまとめてアップロードしたいのです。

PostedFile.SaveAsを使用すると、
ユーザがアップデートしたいファイルをひとつ選択しないと
いけない仕様なので、HTMLInputFileクラスの使用しませんでした。
(違っていたらご指摘ください)

ちなみに、
WebClientを使った
ローカルの決まったフォルダ内のエクセルファイルを全てを
サーバーの決まったフォルダ内にダウンロードはできました。

というか、無理なこと使用としてるような気がしてきました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=921512


[ メッセージ編集済み 編集者: みのる 編集日時 2004-08-19 15:48 ]
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2004-08-19 15:56
結論的には件の処理は不可能です。
(イントラゾーンで、セキュリティ設定を甘くしても、
 ブラウザを使う限り、無理だったと思います。)
⇒違っていたら誰か指摘してください。

1個ファイルをユーザーがダイアログで指定したとき、
そのファイルパスの値まではJavaScriptで取得可能です。
InputFileをいくら増やしても、ダイアログを表示するまでは
いくが、同じフォルダ内のファイルを選択する操作は、
ユーザーのマウスインタラクティブしかありません。

ローカルファイルシステムには、ブラウザ側からは、
プログラム(スクリプト)では、アクセスできないように
なっています。

もし、これがアクセス可能だとしたら、
どんなことが起きてしまうかは・・・ 想像付きますよね。

ですから、フォルダ内ファイル一括送信を行いたいのであれば、
Consoleアプリとか、WindowsFormにするか、事前にユーザーに
圧縮してもらって、それを選んでもらうとか
そういう方法しかありません。

あるいは、イントラゾーンでセキュリティ上許可可能で、
IE限定なら、OCX(ActiveX)にするとか、
セキュリティを甘くしたノータッチデプロイメント(これも
デフォルトではローカルファイルシステムへのプログラムからの能動的
アクセスは禁止されています。)にするとか、

ごく普通の設定+Webブラウザの世界で泳ぐ限りは、無理だと思います。
みのる
大ベテラン
会議室デビュー日: 2003/07/03
投稿数: 100
投稿日時: 2004-08-19 16:30
やはり、そうですか。。。

>ローカルファイルシステムには、ブラウザ側からは、
>プログラム(スクリプト)では、アクセスできないように
>なっています。

この点については非常に危険かもしれませんが、
サーバーのフォルダ・ローカルのフォルダを共有にしてあります。

この場合、FILE.MOVEでいいような気がしてきました。

いろいろと、ご親切にありがとうございます。

スキルアップ/キャリアアップ(JOB@IT)