- PR -

クライアントにあるファイルのサーバへのアップロードについて

1
投稿者投稿内容
XYZ
会議室デビュー日: 2003/12/07
投稿数: 11
投稿日時: 2004-01-26 16:38
いつもお世話になっております。
VB.NETでWebアプリケーションの開発を行っております。
クライアントにあるファイルのサーバへのアップロードを行いたいのですが、
上手くいきません。
バッチのような感じの動きをさせたく、
フォームのPegeLoadイベントで特定のフォルダにある複数のファイルを
サーバの指定フォルダへアップロードさせようとしています。
複数のファイルである為、こちらの過去ログにもあるような、
File1.postedFile.SaveAs
というようなやり方では上手くいかず、
WebCrient.UploadFileを使用し、Loopで一気に行おうと考えています。
しかし、上手くいきません。
現在、サーバーにアプリを実装し、そこで下記のようにソースを作りました。
MyWebClient as New WebClient
MywebClient.UploadFile([サーバーのファイル格納場所・ファイル名のURL(HTTP://〜)],
   [クライアントのファイルがあるPATH・ファイル名])
このフォームをクライアントからIEで起動すると、エラーも無く処理が終了するのですが、
サーバのフォルダにはファイルは作成されません。

過去ログを参照し、"POST"や"PUT"をパラメータに追加したり、
フォルダのセキュリティがEveryone フルコントロールになっていることも確認し、
エイリアスの設定も行いました。
Try〜Catchもソースに加えてみたのですが、エラーになりません。

未熟者につき、何か見落としているのではないかと思っているのですが、
お心当たりの方がいらっしゃいましたら、教えていただけないでしょうか?
どうか、宜しくお願い致します。



Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-26 17:23
 どのような理由で、WebClientクラスを使おうと思われたのでしょうか。

[quote]
MSDNトピック「プラグ可能なプロトコルの概要」より:

インターネット リソースに対する単純な要求を行うアプリケーションには、WebClient クラスを使用して、データをインターネット サーバーにアップロードしたり、インターネット サーバーからデータをダウンロードしたりするための共通のメソッドが用意されています。
[quote]
これを読むと、WebClientの「通信先」はインターネットサーバであると書いてあります。ASP.NET、Webアプリケーションは「インターネットサーバ」で動作します。インターネットサーバの接続先は、インターネットサーバなのでしょうか?つまり、「クライアントでもIIS、FTPサーバが動作しているのか」という意味です。

 ご希望の動作は、クライアント側で動作するアプリケーションで可能と思われます。
XYZ
会議室デビュー日: 2003/12/07
投稿数: 11
投稿日時: 2004-01-26 18:57
ご指導、ありがとうございます。
クライアントでアプリケーションを作成し、
COPYメソッドの実行で上手くいきました。
考えすぎていたようです。

ありがとうございました。
またよろしくお願いします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-01-26 19:28
例えばPage_Loadで
for(int i=0;〜〜;i++)
{
HtmlInputFile input = new HtmlInputFile();
input.ID = "input" + i.ToString();
//(Tableにでも貼り付ける)
}
のようにして、ボタンが押されたとき
for(int i=0;〜〜;i++)
{
HtmlInputFile input = new HtmlInputFile();
input.ID = "input"+ i.ToString();
input.PostedFile.SaveAs(@"D:\test\" + i.ToString() + ".txt" );
}
みたいなことをすればfor文でも可能です。

【以下、話がそれます】
でも、なぜ上記のようなことが可能なのでしょうかね、IDが同じだからでしょうか。
そこで、IDがどちらも[TextBox1]である2つのTextBoxを作ってみました。1つは
aspx上に<asp:TextBox・・として記述します(Aとする)。もうひとつはPage_Loadで
動的に作成します(Bとする)。そしてブラウザで2つのTextBoxに値を入れ、ボタンを
押したときにサーバー側で
Label1.Text = TextBox1.Text;
とすると、Label1には[(Bに入れた値),(Aに入れた値)]と表示されます。こういう
ふうになるんですね、少し驚きました。既知or当たり前でしたらごめんなさい。

[編集]
あ、解決されたようですね ^^

[ メッセージ編集済み 編集者: べる 編集日時 2004-01-26 19:28 ]
1

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