标题:用ASP实现文件下载
只看楼主
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
 问题点数:0 回复次数:19 
用ASP实现文件下载
<%
'**************************************************************
'**使用方法: **
'**在点击下载处加连接<a href="load.asp?filename=文件名"></a> **
'**阳光白雪——2005年11月21日 **
'**E-mail:chenmanyi0818@126.com **
'**HomePage:http://www.toumh.com **
'**************************************************************
'**************************************************
'** 实现文件下载函数 **
'**************************************************
Function Filedownload(filename)
Dim strchar,fliesend,objectFile,objfile,objStream,path,pathtype
pathtype = "application/x-msdownload"
path = server.MapPath(filename)
Const loadfilesize=32768 '32KB,也可取其它值,单位:字节
'在给path赋值后,其最终值必定是该图片在服务器端存储器上的绝对路径,如 C:\Inetpub\wwwroot\pic\help.gif
'因为 server.MapPath 取得的只是站点根目录的路径,所以在后面还应加上文件所在的文件夹再加文件名
'例如:要下载的文件 setup.exe 在根目录的 download 文件夹下,则 path = server.MapPath("download/"&filename)
'***********************************
'测试用
'response.Write(path)
'response.Write(filename)
'response.End()
'***********************************
fliesend=0
TransferFile = True
Set objectFile = Server.CreateObject("Scripting.FileSystemObject")
Set objfile = objectFile.GetFile(Path)
Set objStream = objfile.OpenAsTextStream(1,-1)
Response.AddHeader "content-type", pathtype
response.AddHeader "Content-Disposition","attachment;filename="&filename
Response.AddHeader "content-length", objfile.Size
Do While Not objStream.AtEndOfStream
strchar = objStream.Read(1)
Response.BinaryWrite(strchar)
fliesend = fliesend + 1
If (fliesend MOD loadfilesize) = 0 Then
Response.Flush
If Not Response.IsClientConnected Then
TransferFile = False
Exit Do
End If
End If
Loop
Response.Flush
If Not Response.IsClientConnected Then
TransferFile = False
end if
objStream.Close
Set objStream = Nothing
Set objectFile = Nothing
End Function
'****************************************************
'** 文件下载函数结束 **
'****************************************************
Dim fileneme,downloadfile
filename = request("filename") '此处的 filename 仅为下载文件的名称(包括扩展名)
downloadfile = Filedownload(filename) '调用文件下载函数
Response.End
%>

[此贴子已经被作者于2007-3-21 15:15:47编辑过]

搜索更多相关主题的帖子: ASP 文件 
2005-11-22 09:40
wxhwxh
Rank: 1
等 级:新手上路
帖 子:139
专家分:0
注 册:2005-11-19
得分:0 
太好了,厉害!我试试看。

感谢曾经帮助过我和将要帮助我的人,我也会无私的帮助需要而且我能够帮助的人!
2005-11-22 09:47
hxfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:5807
专家分:108
注 册:2005-4-7
得分:0 
楼主,刚才的东西哪里去了?
帖出来

2005-11-22 09:47
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
得分:0 

你在下载图片,word文档这些浏览器能直接打开的文件就不能用你说的那种方法了,虽然可以通过右键另存为,可是我很懒,嫌麻烦~~~~~~~~~~~~,就弄了这个我觉得简单点的方法~~~~~~~~~~


专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2005-11-22 13:01
szeee
Rank: 1
等 级:新手上路
帖 子:123
专家分:0
注 册:2005-5-13
得分:0 

Do While Not objStream.AtEndOfStream
strchar = objStream.Read(1)
Response.BinaryWrite(strchar)
fliesend = fliesend + 1
If (fliesend MOD loadfilesize) = 0 Then
Response.Flush
If Not Response.IsClientConnected Then
TransferFile = False
Exit Do
End If
End If
Loop

版主,你这程序岂不是很耗资源图片小文件还可以,但是大的影音文件下载就增加系统负担了。


我在bbs.渐渐成长了。。。
2006-04-21 00:53
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
得分:0 

有道理,不过就是不知道该如何修改,楼上有什么好的方法还请指点!


专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2006-04-21 08:11
szeee
Rank: 1
等 级:新手上路
帖 子:123
专家分:0
注 册:2005-5-13
得分:0 
这个问题我思考了三天了,得出下面的结论。我的目的就是隐藏真实的下载地址,我也曾试着用Server.Transfer 替代Response.Redirect 再结合Response.AddHeader属性,也就是在服务端读人url,给客户段作出下载命令。但这种方式客户端没响应。据此判断客户端保存文件只有两种方式:
一,只能是自己读入url,然后自己再作下载判断;二,是被动接受服务端传来的数据流,来保存文件。
前者客户端自己已经读取了url,肯定暴露了真实的地址;后者就是你上面用的类似功能会耗服务器资源的。我也查看了许多下载网站,他们大都是采用前者,然后再结合服务器的防盗链技术来实行的。因此我觉得下面的重点就是研究和学习服务器的防盗链技术了。
各位网友有不共观点请明示,谢谢!

我在bbs.渐渐成长了。。。
2006-04-22 13:28
szeee
Rank: 1
等 级:新手上路
帖 子:123
专家分:0
注 册:2005-5-13
得分:0 
不知道静夜思这个下载怎么做的?http://www.bc-cn.net/bbs/dispbbs.asp?boardID=10&ID=15440&page=1

我在bbs.渐渐成长了。。。
2006-04-23 22:38
icecool
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:20
帖 子:1214
专家分:1366
注 册:2005-3-14
得分:0 

呵呵,ASP木马就是这些做出来的!


http://toorup.3v.do
loading...
2006-04-24 13:01
icecool
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:20
帖 子:1214
专家分:1366
注 册:2005-3-14
得分:0 
  看完楼主的帖子,我的心情竟是久久不能平复,正如老子所云:大音希声,大象希形。我现在终于明白我缺乏的是什么了,正是楼主那种对真理的执着追求和楼主那种对理想的艰苦实践所产生的厚重感。面对楼主的帖子,我震惊得几乎不能动弹了,楼主那种裂纸欲出的大手笔,竟使我忍不住一次次的翻开楼主的帖子,每看一次,赞赏之情就激长数分,我总在想,是否有神灵活在它灵秀的外表下,以至能使人三月不知肉味,使人有余音穿梁,三日不绝的感受。楼主,你写得实在是太好了。我唯一能做的,就只有把这个帖子顶上去这件事了

http://toorup.3v.do
loading...
2006-04-24 13:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-34593-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042108 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved