程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> ASP利用adodb.stream下載文件但不打開的方法

ASP利用adodb.stream下載文件但不打開的方法

編輯:關於ASP編程

     在浏覽器的地址欄裡直接輸入一個doc或xls或jpg的文件的url路徑,那麼該文件會直接顯示在浏覽器裡。而在很多時候我們希望能直接彈出下載提示框讓用戶下載,我們該怎麼辦呢?這裡有兩種方法: 

    1、設置你的服務器的iis,給doc等後綴名做映射。 
    2、在向客戶端發送時設置其contenttype。 
    下面詳細說明方法2 
    程序代碼: 
    復制代碼 代碼如下: 
    <% 
    Response.Buffer = true 
    Response.Clear 
    dim url 
    Dim fso,fl,flsize 
    dim Dname 
    Dim objStream,ContentType,flName,isre,url1 
    '*********************************************調用時傳入的下載文件名 
    Dname=trim(request("n")) 
    '****************************************************************** 
    If Dname<>"" Then 
    '******************************下載文件存放的服務端目錄 
    url=server.MapPath("/")&""&Dname 
    '*************************************************** 
    End If 
    Set fso=Server.CreateObject("Scripting.FileSystemObject") 
    Set fl=fso.getfile(url) 
    flsize=fl.size 
    flName=fl.name 
    Set fl=Nothing 
    Set fso=Nothing 
    %> 
    <% 
    Set objStream = Server.CreateObject("ADODB.Stream") 
    objStream.Open 
    objStream.Type = 1 
    objStream.LoadFromFile url 

    Select Case lcase(Right(flName, 4)) 
    Case ".asf" 
    ContentType = "video/x-ms-asf" 
    Case ".avi" 
    ContentType = "video/avi" 
    Case ".doc" 
    ContentType = "application/msword" 
    Case ".zip" 
    ContentType = "application/zip" 
    Case ".xls" 
    ContentType = "application/vnd.ms-excel" 
    Case ".gif" 
    ContentType = "image/gif" 
    Case ".jpg", "jpeg" 
    ContentType = "image/jpeg" 
    Case ".wav" 
    ContentType = "audio/wav" 
    Case ".mp3" 
    ContentType = "audio/mpeg3" 
    Case ".mpg", "mpeg" 'liehuo.net
    ContentType = "video/mpeg" 
    Case ".rtf" 
    ContentType = "application/rtf" 
    Case ".htm", "html" 
    ContentType = "text/html" 
    Case ".txt" 
    ContentType = "text/plain" 
    Case Else 
    ContentType = "application/octet-stream" 
    End Select 

    Response.AddHeader "Content-Disposition", "attachment; filename=" & flName 
    Response.AddHeader "Content-Length", flsize 
    Response.Charset = "UTF-8" 
    Response.ContentType = ContentType 
    Response.BinaryWrite objStream.Read 
    Response.Flush 
    response.Clear() 
    objStream.Close 
    Set objStream = Nothing 
    %> 

    將下面的東西存成download.asp然後你就可以用<a herf="http://xxx.xxx.com/download.asp?n=file.doc">download!</a>來下載同一目錄下的file.doc了! 
    但是這裡有個問題就是直接將file.doc路徑寫在url裡是不安全的,所以解決方案應該是將file.doc的路徑存到數據庫裡,同過查找數據庫後得到路徑 
    在這個程序的最前面如果加上一個判斷: 
    if instr(Request.ServerVariables("HTTP_REFERER"),"http://你的域名")=0 then 
    Response.End 
    end if 
    就能夠很好的防止別人的盜鏈了

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved