今天应一客户要求,在他网站的新产品详细页面做两个功能按钮,一个是在线浏览对应产品的pdf文件,另一个是点击后自动弹出保存文件对话框!
以下是防止文件在线打开代码:
把下面代码保存为asp文件,如:Downlad.asp;
使用时把要下载的文件路径传给此页面就可以了,
例:http://www.tanggao.met/Download.asp?FileUrl=images/fileName.pdf
注:此代码只做功能说明,因为代码对其他文件一样有效,所以实际使用中要对重要文件做过渡处理,如:网站源码文件(asp、php、aspx等)以及数据库文件,不然你的网站源码和数据库会被下载,后台被破解等!!
<% '防止下载时文件在线打开 'www.tenggao.net FileUrl=trim(request("file")) '----------------------------------------------------------------------------------------------------------------------------------------- 'FileUrl 指定要下载的文件路径 Function downloadFile(FileUrl) if FileUrl="" or isnull(FileUrl) then Response.Write("缺少参数...") Response.End end if FileUrlname = server.MapPath(FileUrl) 'response.write FileUrlname 'response.end Response.Buffer = True Response.Clear Set s = Server.CreateObject("ADODB.Stream") s.Open s.Type = 1 on error resume next Set fso = Server.CreateObject("Scripting.FileSystemObject") if not fso.FileExists(FileUrlname) then Response.Write("Error:" & FileUrlname & " 文件不存在") Response.End end if Set f = fso.GetFile(FileUrlname) intFilelength = f.size s.LoadFromFile(FileUrlname) if err then Response.Write("Error:" & err.Description & " ") Response.End end if Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name Response.AddHeader "Content-Length", intFilelength Response.CharSet = "UTF-8" Response.ContentType = "application/octet-stream" Response.BinaryWrite s.Read Response.Flush s.Close Set s = Nothing End Function '----------------------------------------------------------------------------------------------------------------------------------------- call downloadFile(FileUrl)'调用自定义函数 %>