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