不直接打开而是另存为

ASP程序中,有一些附件并不希望用已知程序直接打开,而是想点击时弹出下载提示。

我用了下面的代码:

<%
call downloadFile(Request("path"))

function downloadFile(strFile)
strFilename = server.MapPath(strFile)
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(strFilename) then
Response.Write(”<h1>Error:</h1>” & strFilename & ” does not exist<p>”)
Response.End
end if
Set f = fso.GetFile(strFilename)
intFilelength = f.size
s.LoadFromFile(strFilename)
if err then
Response.Write(”<h1>Error: </h1>” & err.Description & “<p>”)
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
%>

将上面的代码另存为down.asp放在要附件的目录下面(比如UpLoadFile/),然后引用:

<a href=”UpLoadFile/down.asp?path=<%=rs(”path”)%>”>点击下载</a>

UPDATE @ 2007.03.29:先道歉,上面的代码有一些问题,别人可以下载你的任何文件!fisker给出的补丁是在

function downloadFile(strFile)

后面加上

if left(strFile,1)="/" or left(strFile,1)="\" or left(strFile,2)=".." then response.end

okevin?i=0Lbn6Y

okevin?i=2oRJB4Q3 okevin?i=V9P37O9c okevin?i=QwyXS1hY
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值