IE でドキュメントをリンクするときに、OLE でサポートされているドキュメントが見つかった場合、IE は対応するプログラムを自動的に呼び出してそれを開きますが、ユーザーにマウスの右クリックを促すことはできますが、この機能は必要ではありません。
「対象をファイルに保存」「...」コマンドを使用してドキュメントを
ダウンロードしますが、これは結局のところあまりフレンドリーではありません。この記事では、IE によるドキュメントの直接ダウンロードを実装するための FSO メソッドと Stream メソッドの使用について説明します。
=65001%>
<%
'ファイル名を入力する必要があります
if Request("ファイル名")="" then
response.write "<h1>エラー:</h1>ファイル名が空です!<p>"
それ以外
call downloadFile(replace(replace(Request("ファイル名"),"",""),"/",""))
関数 downloadFile(strFile)
' これを機能させるには、最新の MDAC バージョンを使用していることを確認してください
'指定されたファイルのフルパスを取得
strFilename = サーバー.MapPath(strFile)
' バッファをクリアします
応答.バッファ = True
応答.クリア
' ストリームを作成する
Set s = Server.CreateObject("ADODB.Stream")
s.開く
' バイナリとして設定
s.タイプ = 1
' ファイルをロードします
エラー時は次から再開
' ファイルが存在することを確認します
Set fso = Server.CreateObject("Scripting.FileSystemObject")
fso.FileExists(strFilename) でない場合は、
Response.Write("<h1>エラー:</h1>"&strFilename&" が存在しません!<p>")
応答.終了
終了する場合
'ファイルの長さを取得する
f = fso.GetFile(strFilename) を設定します。
intFilelength = f.size
s.LoadFromFile(strFilename)
エラーの場合は
Response.Write("<h1>エラー: </h1>不明なエラー!<p>")
応答.終了
end if
' ユーザーにヘッダーを送信します。
Response.AddHeader "Content-Disposition","attachment; filename="&f.name
Response.AddHeader "コンテンツの長さ",intFilelength
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
' ファイルをブラウザに出力します
Response.BinaryWrite s.Read
Response.Flush
' 片付ける
s.閉じる
s = 何も設定しない
終了関数
終了する場合
%>