ASP实现文件直接下载的代码

ASP 1748 0 2014-08-10

ASP实现文件直接下载的代码

在IE进行文档链接时,如果遇到OLE支持的文档,IE会自动调用相应程序打开它,有时候这种功能并不是我们所需的,虽然我们可以提醒用户用鼠标右键-->"目标另存为...."命令来下载文档,但这样毕竟不太友好,本文描述了利用FSO及Stream方法实现IE直接下载文档。

 

<%@ language=vbscript codepage=65001%> 

<% 
'Filename must be input 
if Request("Filename")="" then 
response.write "<h1>Error:</h1>Filename is empty!<p>" 
else 
call downloadFile(replace(replace(Request("Filename"),"\",""),"/","")) 

Function downloadFile(strFile) 
' make sure you are on the latest MDAC version for this to work 
' get full path of specified file 
strFilename = server.MapPath(strFile) 

' clear the buffer 
Response.Buffer = True 
Response.Clear 

' create stream 
Set s = Server.CreateObject("ADODB.Stream") 
s.Open 

' Set as binary 
s.Type = 1 

' load in the file 
on error resume next 

' check the file exists 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
if not fso.FileExists(strFilename) then 
Response.Write("<h1>Error:</h1>"&strFilename&" does not exists!<p>") 
Response.End 
end if 

' get length of file 
Set f = fso.GetFile(strFilename) 
intFilelength = f.size 

s.LoadFromFile(strFilename) 
if err then 
Response.Write("<h1>Error: </h1>Unknown Error!<p>") 
Response.End 
end if 
' send the headers to the users Browse 
Response.AddHeader "Content-Disposition","attachment; filename="&f.name 
Response.AddHeader "Content-Length",intFilelength 
Response.CharSet = "UTF-8" 
Response.ContentType = "application/octet-stream" 
' output the file to the browser 
Response.BinaryWrite s.Read 
Response.Flush 
' tidy up 
s.Close 
Set s = Nothing 
End Function 
end if 
%>

上一篇:asp 去除最后一个字符的代码

下一篇:Win7或Windows server 2008中IIS7支持ASP连接Access数据库的方法

讨论数量:0

请先登录再发表讨论。 2024-11-24

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链