オリジナル作品: possible_Y、Times Classroom からダウンロード
doc、xls、または jpg ファイルの URL パスをブラウザのアドレス バーに直接入力すると、ファイルがブラウザに直接表示されます。多くの場合、ユーザーがダウンロードできるように、ダウンロード プロンプト ボックスを直接ポップアップ表示したいと考えています。ここには 2 つの方法があります。
1. サーバーの iis を設定し、doc などのサフィックスをマップします。
2. クライアントに送信するときに contenttype を設定します。
方法 2 については、以下で詳しく説明します。
<%
応答.バッファ = true
Response.Clear
dim URL
ディム fso、fl、flsize
薄暗い名前
Dim objStream、ContentType、flName、isre、url1
ダウンロード ファイルの呼び出し時に '******************************************* が渡されます名前
Dname=trim(リクエスト("n"))
'************************************************ * ****************
Dname<>"" の場合
'******************************ダウンロードしたファイルが保存されるサーバーディレクトリ
url=server.MapPath("/")&""&Dname
'************************************************ * *
End If
Set fso=Server.CreateObject("Scripting.FileSystemObject")
fl=fso.getfile(url) を設定します
flsize=fl.サイズ
flName=fl.name
fl=何も設定しない
fso=何も設定しない
%>
<%
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile URL
大文字と小文字を選択 lcase(Right(flName, 4))
ケース「.asf」
ContentType = "ビデオ/x-ms-asf"
ケース「.avi」
ContentType = "ビデオ/avi"
ケース「.doc」
ContentType = "アプリケーション/msword"
ケース「.zip」
ContentType = "アプリケーション/zip"
ケース「.xls」
ContentType = "アプリケーション/vnd.ms-excel"
ケース「.gif」
ContentType = "画像/gif"
「.jpg」、「jpeg」の場合
ContentType = "画像/jpeg"
ケース「.wav」
ContentType = "オーディオ/wav"
ケース「.mp3」
ContentType = "オーディオ/mpeg3"
「.mpg」、「mpeg」の場合
ContentType = "ビデオ/mpeg"
ケース「.rtf」
ContentType = "アプリケーション/rtf"
「.htm」、「html」の場合
ContentType = "テキスト/html"
「.txt」の場合
ContentType = "テキスト/プレーン"
それ以外の場合
ContentType = "アプリケーション/オクテットストリーム"
エンドセレクト
Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "Content-Length"、flsize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
レスポンス.フラッシュ
応答.Clear()
objStream.Close
Set objStream = Nothing
%>
以下を download.asp に保存すると、 <a herf=" http://www.downcodes.com/download.asp?n=file.doc">download!</ a > を使用できるようになります。 file.doc を同じディレクトリにダウンロードするには、
ただし、file.doc パスを URL に直接記述するのは安全ではないという問題があるため、解決策は、検索後に file.doc パスをデータベースに保存することです。
このプログラムの先頭に
if instr(Request.ServerVariables("HTTP_REFERER"),"http://ドメイン名")=0
という判定を追加すると、パスを取得できます。
応答.終了
end if を使用すると、
他の人がリンクを盗むのを十分に防ぐことができます。