- PR -

WebClient.DownloadFileについて

1
投稿者投稿内容
海亀
会議室デビュー日: 2004/02/19
投稿数: 9
お住まい・勤務地: 渋谷
投稿日時: 2004-03-25 17:28
VB.NETでWEBアプリケーションの開発を行っております。
指定したURLからクライアントへファイルをダウンロードするメソッド(WebClient.DownloadFile)を使いましたが。なぜかファイルはクライアントのパスではなくてWEBサーバーのパスに保存されているのでしょうか。同じ悩みを抱えた方或いは解決方法ご存知の方是非ご教授ください。お願いいたします。

開発環境:WINDOWSXP、microsoft .net framework 1.1
ソース:
Dim myftp As New System.Net.WebClient

Try
myftp.DownloadFile(Address, LocalFilePath)
Catch ex As Exception
      'エラー処理
End Try
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-03-25 17:46
WEBアプリケーションなので、海亀さんが提示されたソースのプログラムはサーバーで動いています。

つまり、ブラウザからの要求を受けたWebサーバーが、Webクライアントとして別のサーバー(今回は自分自身かな?)のポート80番にアクセスに行っているということです。

海亀
会議室デビュー日: 2004/02/19
投稿数: 9
お住まい・勤務地: 渋谷
投稿日時: 2004-03-29 13:02
ご回答ありがとうございます。
この方法は根本的にだめであることが分かりました。resoponseを使い実現できました。
ソース:

Try
'downFileNm = IO.Path.GetFileName(FtpInf.Address)
Response.Clear()
'***** ファイル名指定 *****
Response.AppendHeader("Content-Disposition", _
"attachment; filename=" & _
HttpUtility.UrlEncode(FtpInf.ToPath))
'***** CONTENT TYPE 指定 *****
Response.ContentType = "Application/octet-stream"
'***** ダウンロード *****
Response.WriteFile(FtpInf.Address)
Response.Flush()
Response.Close()

Catch ex As Exception
'***** エラー処理 *****
Response.Close()
End Try

新たな問題ができてました。ダウンロードダイアログが出ることによって、ダウンロード
成功したかどうかを検知することができません。要するに、仕様的にはダウンロード成功した場合、次の処理を自動的に行いたいです。よろしくお願いします。
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2004-03-29 15:56
ダウンロードダイアログが出る出ないに関わらずサーバー側がクライアント側に正常にファイルを送信できたかどうかは分からないと思います。

またダウンロードダイアログが出なければ次の処理を続行できるのでは?と思っておられるようですが、それはサーバー側のプログラムではクライアントセキュリティ上どうにもならないとおもいます。
URLクリックしただけで、知らないうちにクライアント側に大容量ファイルや大量のファイルを勝手に送りつけられたら問題だと思いませんか?
海亀
会議室デビュー日: 2004/02/19
投稿数: 9
お住まい・勤務地: 渋谷
投稿日時: 2004-03-29 19:37
noderaさん
ありがとうございます。全くおっしゃる通りです。仕様変更にするしかないですね。
1

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