電子書籍の厳選無料作品が豊富!

ASPでファイルをダウンロードするスクリプトで、以下の様な例がMicrosoftのページに
掲載されているのですが、

<%
'Set the content type to the specific type that you are sending.
Response.ContentType = "application/x-msexcel"

Const adTypeBinary = 1
Dim strFilePath

strFilePath = "C:\ExcelFiles\Excel1.xls" 'This is the path to the file on disk.

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath

Response.BinaryWrite objStream.Read

objStream.Close
Set objStream = Nothing
%>

上記の中の"strFilePath "の部分を、サーバーローカルのハードディスク以外に
出来る方法というのはあるのでしょうか?

サーバーのオブジェクトとして、
Set objStream = Server.CreateObject("ADODB.Stream")
をセットしているので、この方法では無理だとは思うのですが、同じようにバイナリー
ファイル(特に有名なアプリケーションに関連付けされてしまっている拡張子を持つ
もの)をダウンロードダイアログを表示して、スクリプトのあるサーバー以外のサーバー
上にあるファイルを明示的にダウンロードできるようにしたいのですが。。。

A 回答 (1件)

ダウンロードダイアログを出させるには、Response.ContentType に、なんか適当なやつをセットしておくといけます。

application/NormalFile とか。

他のサーバのファイルをダウンロードさせたければ、このASP自信でとってきてレスポンスに返してやればよいでしょう。一番簡単なのは、前もってダウンロードしておけばいいし、動的に変わるのであれば、他の方法でGETすればよいと思います。私は参考URLに示すDLLのW3Getというコマンドで取ってきてます。

参考URL:http://www.hi-ho.ne.jp/babaq/basp21.html

この回答への補足

ご回答ありがとうございます。ダウンロードさせたいファイルは.wmvファイルになりますので、MIMEの設定と質問に書いたスクリプトだけでは不十分なのですが、その不十分なところは以前別の質問で解決いたしました。

今回のご回答を参考に致しますと、

1.スクリプトを実行するサーバーが、まずBASP21のコンポーネントに
ある、W3getの機能を使い、自分のローカルドライブ内に外部にある
ファイルをダウンロードし、保存する。

2.保存したファイルを送り出すためのスクリプトに、外部にあるファイ
ルをダウンロード完了後Redirectさせるか、外部のファイルを取り込んだ
スクリプトのうしろに、続けて今度は送り出すためのスクリプトを実行さ
せる。

3.ユーザーに送信完了後、ダウンロードしてきたファイルを削除する。

という手順でよろしいでしょうか?

この場合、3番目の「ファイルを削除する」というタイミングは、
「ユーザーのダウンロード完了後である」必要がありますよね? その
判断はどうすれば出来るのでしょうか?

補足日時:2005/07/09 13:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!