ASP发送二进制数据
为某种原因要实现一个RAR的文件的下载,而且为了节省服务器资源,需要做一个判断,只有通过Session("xxx")="ok"的才能下载我用两种方法,用fso吧RAR文件读取到Stream流中发送,但是这样占用资源太厉害
用Server.transfer,普通是没有问题,但是遇到<%就会执行,导致报错
有什么简单的方法?不用防盗链,不用FSO。。。。 重写asp.dll :ohh: :ohh:
我已经找出解决方法了,[url]http://miaoqiyuan.cn/p/asp-binarywrite-adodb-stream/[/url]
[quote]< %@codepage=65001%>
< %
response.buffer=false
if session("safe_mode")<>"ok" then response.write "<form action=""../../../admin.asp"" method=""post"" id=""a""><script type=""text/javascript"">document.getElementById(""a"").submit();</script>":response.end
if instr(request.Querystring,"/")< =0 then response.redirect "/":response.end
set fso=server.createobject("Scripting.FileSystemObject")
file=server.mappath(split(request.QueryString,"/")(1)&".rar")
if not fso.fileexists(file) then response.redirect "/":response.end
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition","attachment;filename="&now&".rar"
Set Ados=Server.CreateObject("Adodb.Stream")
Ados.Mode=3
Ados.Type=1
Ados.Open
Ados.LoadFromFile(Server.mappath(split(request.QueryString,"/")(1)&".rar"))
response.binarywrite Ados.read()
%>
</form>[/quote] stream 一样占内存
下载个2G的文件试试
或者多人同下一个小文件试试
不拖死你服务器? :o 就是,你有多少内存来浪费啊!
怎么可能用这样的方法! 乱来你............... :o :o :o
哪有解决方法吗?
页:
[1]
