- PR -

サーバ側の処理deダウンロード

1
投稿者投稿内容
hal
常連さん
会議室デビュー日: 2004/02/17
投稿数: 29
投稿日時: 2004-11-04 15:55
お世話になります。

当方、asp.net(c#)にてwebアプリケーションの開発を行っています。
質問させて下さい。
現在、共有サーバ(プログラムのインストールされているwebサーバとは別)よりクライアントにファイル(.zip)をダウンロードする処理を考えているのですが、共有サーバへのアクセス権限によりhttpダウンロードが出来ません。
そこで、1度アプリケーションwebサーバにファイルをコピーしてからそれをhttpにてダウンロードしようと思っています。
この場合、<a href=〜>でダウンロード用アンカーを作成すると、webサーバへのコピー処理が出来ません。
サーバ側の処理として
@共有サーバからwebサーバへのファイルのダウンロード(コピー)
Awebサーバからファイルをダウンロード
という流れにしたいのですが、サーバ側で<a href=〜>と同様は実現出来ないでしょうか?
<a href=〜>はクライアントの処理なので不可能なのでしょうか?

よろしくお願いします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-11-04 16:03
Webサーバー側の処理で、Fileクラスなどを使ってファイルを共有サーバからWebサーバーにコピーして、そのファイルを指す<A href=〜>タグをクライアントに出力してはどうでしょうか。
hal
常連さん
会議室デビュー日: 2004/02/17
投稿数: 29
投稿日時: 2004-11-04 16:16
引用:

Webサーバー側の処理で、Fileクラスなどを使ってファイルを共有サーバからWebサーバーにコピーして、そのファイルを指す<A href=〜>タグをクライアントに出力してはどうでしょうか。



一郎さん、アドバイスありがとうございます。

@Webサーバーにコピー
Aクライアントからのダウンロード要求
2回目のポストバックでダウンロードすることになりますよね?

当方の環境はWebサーバは複数サーバをバランシングする構成になっているので上記方法だとクライアントから2回目のポストバックでアクセスした時に1回目コピーしたファイル(があるサーバ)を特定出来ない為、1回のサーバ処理でクライアントへのダウンロードまで完了したいのですが…。説明不足ですみません。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-11-04 16:34
なるほど、それなら

Webサーバー側の処理で、ファイルを共有サーバから読み取り、それをResponse.BinaryWrite()メソッドでレスポンスとしてクライアントに書き出す。

で良いと思います。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-11-04 16:39
サーバコントロールのリンクボタンを使ってClickイベントを起こさせ、
その中でwebサーバへのコピーとダウンロードを一気に行うというのは如何でしょう?

検証はしておりませんので、ご参考までに。

#かぶった上に、一郎さんの仰っている方がスマートかもしれません。。。

_________________
徒然なるままに

[ メッセージ編集済み 編集者: まゆりん 編集日時 2004-11-04 16:43 ]
hal
常連さん
会議室デビュー日: 2004/02/17
投稿数: 29
投稿日時: 2004-11-04 17:53
引用:

Webサーバー側の処理で、ファイルを共有サーバから読み取り、それをResponse.BinaryWrite()メソッドでレスポンスとしてクライアントに書き出す。



一郎さん、まゆりんさん、アドバイスありがとうございます。
『BinaryWrite()』メソッドについて調べてみました。利用法としては画像ファイル等をクライアントに取り込む等に使うようですが、このメソッドでクライアントの指定したフォルダにダウンロードしたファイルを格納することは出来るのでしょうか?
出力ストリームからバイナリ−データを読み出す必要がありますか?

Response.Clear();
Response.ContentType = "text/html";
Response.BinaryWrite(ダウンロードファイル);
Response.End();

ちなみにダウンロード対象ファイルはexeファイルを自己解凍形式の圧縮したものです。
ダウンロード後解凍してクライアントにインストールしようと思ってます。
…『BinaryWrite()』では無理でしょうか?

[ メッセージ編集済み 編集者: hal 編集日時 2004-11-04 19:16 ]
hal
常連さん
会議室デビュー日: 2004/02/17
投稿数: 29
投稿日時: 2004-11-04 20:47
自己レスです。

Response.WriteFile()メソッドでファイル自体をクライアントに出力出来ました!

一郎さん、まゆりんさんありがとうございました。
1

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