|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的fso|stream|下载在IE举行文档链接时,假如碰到OLE撑持的文档,IE会主动挪用响应程序翻开它,偶然候这类功效并非我们所需的,固然我们能够提示用户用鼠标右键-->"方针另存为...."命令来下载文档,但如许究竟不太友爱,本文形貌了使用FSO及Stream办法完成IE间接下载文档.
<%@language=vbscriptcodepage=65001%>
<%
Filenamemustbeinput
ifRequest("Filename")=""then
response.write"<h1>Error:</h1>Filenameisempty!<p>"
else
calldownloadFile(replace(replace(Request("Filename"),"",""),"/",""))
FunctiondownloadFile(strFile)
makesureyouareonthelatestMDACversionforthistowork
getfullpathofspecifiedfile
strFilename=server.MapPath(strFile)
clearthebuffer
Response.Buffer=True
Response.Clear
createstream
Sets=Server.CreateObject("ADODB.Stream")
s.Open
Setasbinary
s.Type=1
loadinthefile
onerrorresumenext
checkthefileexists
Setfso=Server.CreateObject("Scripting.FileSystemObject")
ifnotfso.FileExists(strFilename)then
Response.Write("<h1>Error:</h1>"&strFilename&"doesnotexists!<p>")
Response.End
endif
getlengthoffile
Setf=fso.GetFile(strFilename)
intFilelength=f.size
s.LoadFromFile(strFilename)
iferrthen
Response.Write("<h1>Error:</h1>UnknownError!<p>")
Response.End
endif
sendtheheaderstotheusersBrowse
Response.AddHeader"Content-Disposition","attachment;filename="&f.name
Response.AddHeader"Content-Length",intFilelength
Response.CharSet="UTF-8"
Response.ContentType="application/octet-stream"
outputthefiletothebrowser
Response.BinaryWrites.Read
Response.Flush
tidyup
s.Close
Sets=Nothing
EndFunction
endif
%>
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。 |
|