ASP发送二进制数据

来源:百度知道 编辑:UC知道 时间:2024/05/25 12:32:06
为某种原因要实现一个RAR的文件的下载,而且为了节省服务器资源,需要做一个判断,只有通过Session("xxx")="ok"的才能下载

我用两种方法,用fso吧RAR文件读取到Stream流中发送,但是这样占用资源太厉害
用Server.transfer,普通是没有问题,但是遇到<%就会执行,导致报错

有什么简单的方法?不用防盗链,不用FSO。。。。
实际中午的时候我已经找到解决方法了~
http://miaoqiyuan.cn/p/asp-binarywrite-adodb-stream/
2楼给的链接最接近我的方案

三楼的说即使你设置了session和存储stream中,这种方法依然不能防范,盗链者可以在他的服务端写一个组件,登录到你的web服务中,然后下载。
我的程序是根据GUID生成编码提取的,下载一次即失效,所以“盗链者可以在他的服务端写一个组件,登录到你的web服务中”这种不可能,而且我们不是专业的下载站,只提供我们自己产品的下载

四楼的302重定向 或者Meta refresh
这样还是暴漏了URL

五楼的方法没有测试
转UUE没有必要

六楼的
我的程序是根据GUID生成编码提取的,下载一次即失效,所以“盗链者可以在他的服务端写一个组件,登录到你的web服务中”这种不可能,而且我们不是专业的下载站,只提供我们自己产品的下载

http://www.68design.net/Development/ASP/Basis-ASP/28055-1.html

不知这个行不,我们用java的就不存在这个问题。
我们java 的,文件名是乱码保存在存储上,真实文件名在数据库里。需要请求才能转换下载,否则你怎么下载都下不来

这还不简单,你让他注册,然后登陆的时候设置session("")="OK" 就行了撒,
或者不一定注册,哪怕让他操作一次某种步骤或输入OK,再赋值也可以撒。这样完全不影响性能。操作也方便。

如果要是绝对的防盗链,难度比较大,现在侦测软件都可以侦测到你的真实数据来源。

即使你设置了session和存储stream中,这种方法依然不能防范,盗链者可以在他的服务端写一个组件,登录到你的web服务中,然后下载。

先判断session
然后 response.write
302重定向 或者Meta refresh

不要把简单的问题搞复杂

我觉得是不是还有一个办法:
如果数据比较小的话……(<64K),你可以考虑让asp传送uue格式的压缩文件内容到client的页面上 让用户多几步:全选,复制,新建文件,修改扩展名为uue,记事本打开,粘贴内容,保存,winrar打开uue文件,解压缩。因为uue格式的文件内容是字符,不是二进制内容 呵呵…………只是用户会烦了点~~
ps:*.*转*.uue的工具很少很少 我好不容易发现一个,你如果需要你发短消息给我,我短消息里面给你uue格式的uue工具 - -,你解压缩下来自己用;

================
还有 你可以参考一下DVBBS(ASP)的文件下载的代码。你可以去dvbbs下载下来,研究下。同类的符合你的要求的还有是discuz!的文件下载代码;用下载工具