In the browser's address bar, directly enter the url path of a doc or xls or jpg file, and the file will be displayed directly in the browser. In many cases, we hope to directly pop up the download prompt box for users to download. What should we do? Here are two methods:
1. Set up the iis of your server and map the suffix names such as doc.
2. Set its contenttype when sending to the client.
Method 2 is explained in detail below
Program code:
<% Response.Buffer = true Response.Clear dim url Dim fso,fl,flsize dim Dname Dim objStream,ContentType,flName,isre,url1 '************************************************ The download file name passed in when the call Dname=trim(request("n")) '****************************************************************************************************************************** If Dname<>"" Then '*************************************************************** The server directory where the download file is stored is 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" 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 %>Save the following items as download.asp and you can use <aherf="http://xxx.xxx.com/download.asp?n=file.doc">download!</a> to download file.doc in the same directory!
But there is a problem here that it is not safe to directly write the file.doc path in the url, so the solution should be to store the file.doc path in the database, and get the path after searching the database
If you add a judgment at the beginning of this program:
if instr(Request.ServerVariables("HTTP_REFERER"),"http://your domain name")=0 then Response.End end ifIt can prevent other people from stealing their links.