在我們網(wǎng)絡(luò)編程中,可能需要實現(xiàn)文件點擊下載的功能,但是有的文檔比如Word、Excel、PDF等等,當點擊鏈接時會在IE中直接打開,這并不是我們想要呈現(xiàn)給用戶的結(jié)果。 下面的方法就是當用戶點擊連接時,IE會提示詢問用戶是下載還是打開。以下的程序判斷了當前文件是否存在,還會取得文件的大小,用戶使用會覺得更加友好。 程序代碼 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <%Option Explicit%> <% Dim Filename, s, fs, fl, Filesize '取得文件名參數(shù),可以是表單提交或者查詢字符串 Filename = Trim(Request.Form("filename")) If Filename = "" Then Filename = Trim(Request.QueryString("filename")) If Filename = "" Then Call ShowMessage("對不起,文件名為空!") '轉(zhuǎn)為絕對路徑,如果傳遞過來的參數(shù)已經(jīng)是絕對路徑則不用轉(zhuǎn)換 If Mid(Filename, 2, 2) = ":\" Then Filename = Replace(Filename, "/", "\") Else Filename = Server.MapPath(Filename) '檢查文件是否存在 Set fs = Server.CreateObject("Scripting.FileSystemObject") If Not fs.FileExists(Filename) Then Call ShowMessage("對不起,指定文件不存在!") '取得文件大小,單位是字節(jié) Set fl = fs.GetFile(Filename) Filesize = fl.Size '銷毀FSO對象 Set fl = Nothing Set fs = Nothing '清理緩存 Response.Buffer = True Response.Clear '創(chuàng)建Stream對象 Set s = Server.CreateObject("ADODB.Stream") s.Open '設(shè)置為二進制方式 s.Type = 1 '容錯 On Error Resume Next '裝載文件 s.LoadFromFile (Filename) If Err Then Call ShowMessage("裝載指定文件出現(xiàn)未知錯誤!") '向瀏覽器輸出頭部 Response.AddHeader "Content-Disposition", "attachment; filename=" & Mid(Filename, InStrRev(Filename, "\") + 1) Response.AddHeader "Content-Length", Filesize 'Response.CharSet="UTF-8" Response.ContentType = "application/octet-stream" '向瀏覽器輸出文件 Response.BinaryWrite s.Read Response.Flush '銷毀對象 s.Close: Set s = Nothing '在本頁輸出提示信息 Sub ShowMessage(msg) Response.Write "<br><div align='center'><div style='color:red; font-weight:bold; text-align:center; border:1px solid #CCCCCC; background-color:#E8E8E8; padding:4px 2px 2px; width:300px; font-size:12px'>" & msg & "</div></div><br>" Response.End End Sub %> |
|
來自: icecity1306 > 《開發(fā)資料》