主题:如何实现下载的功能..(比较简单的)
muyi
[专家分:50] 发布于 2008-04-16 16:05:00
大虾们如何实现下载的功能..(比较简单的)
回复列表 (共5个回复)
沙发
muyi [专家分:50] 发布于 2008-04-16 16:20:00
我在809个人站点 找到相关的代码
809个人站点中写到:
'将下边的文件保存为Download.asp就可以了,
'然后根据需要传要下载的文件过来就可以了。
'格式:Download.asp?FileName=要下载的文件名
Dim Stream
Dim Contents
Dim FileName
Dim FileExt
Const adTypeBinary = 1
FileName = Request.QueryString("FileName")
if FileName = "" Then
Response.Write "无效文件名."
Response.End
End if
' 下面是不希望下载的文件
FileExt = Mid(FileName, InStrRev(FileName, ".") + 1)
Select Case UCase(FileExt)
Case "ASP", "ASA", "ASPX", "ASAX", "MDB"
Response.Write "受保护文件,不能下载."
Response.End
End Select
' 下载这个文件
Response.Clear
Response.ContentType = "application/octet-stream"
Response.AddHeader "content-disposition", "attachment; filename=" & FileName
Set Stream = server.CreateObject("ADODB.Stream")
Stream.Type = adTypeBinary
Stream.Open
Stream.LoadFromFile Server.MapPath(FileName)
While Not Stream.EOS
Response.BinaryWrite Stream.Read(1024 * 64)
Wend
Stream.Close
Set Stream = Nothing
Response.Flush
Response.End
但我不明白下面两句话:
'然后根据需要传要下载的文件过来就可以了。
'格式:Download.asp?FileName=要下载的文件名
哪位大虾能否解释一下,最好详细一点,我是个菜鸟。。。高分回报!!!回答就有分
板凳
tianyu123 [专家分:2570] 发布于 2008-04-16 17:17:00
'然后根据需要传要下载的文件过来就可以了。
'格式:Download.asp?FileName=要下载的文件名
意思就是在你做下载连接时把要下载的文件的文件名及后缀传递给Download.asp
如:
<a href="Download.asp?FileName=123.exe">123文件下载</a>
3 楼
muyi [专家分:50] 发布于 2008-04-16 20:15:00
不好使。。。。。。
有没有其他的方法?
4 楼
0440132 [专家分:0] 发布于 2008-04-16 20:51:00
我是ASP新手,在做文件下载功能的时候遇到点问题,各位大侠帮帮我.
我用ASP,IIS,VBScript做了个校园网,我把要下载的文件放在了download文件夹里,网站的文件地址是http://www.shool.edu.cn/download/2006324650.rar.
一定要用函数实现吗,能用VBScript实现吗?能写段详细代码给我吗
5 楼
notbird [专家分:2800] 发布于 2008-04-19 16:10:00
' Download the file with the given name at current path
' Return values: 0 - success, 1 - file not found, 2 - read error
Public Function Download(fileName)
Const chunk = 65535
Dim filePath, fileSize, i, stream
Set stream = Server.CreateObject("ADODB.Stream")
filePath = FSO.BuildPath(path, fileName)
If not FSO.FileExists(filePath) Then
Download = 1
Else
stream.Type = 1
stream.Open
on error resume next
stream.LoadFromFile(filePath)
fileSize = stream.Size
If err.Number<>0 Then
Download = 2
Else
Response.AddHeader "Content-Disposition","attachment;filename=" & fileName
Response.AddHeader "Content-Length", fileSize
Response.CharSet = "UTF-8"
Response.ContentType = "application/x-msdownload"
For i = 1 To fileSize \ chunk
If Not Response.IsClientConnected Then Exit For
Response.BinaryWrite stream.Read(chunk)
Next
If fileSize Mod chunk > 0 Then
If Response.IsClientConnected Then
Response.BinaryWrite stream.Read(fileSize Mod chunk)
End If
End If
Download = 0
End If
stream.Close
End If
End Function
我来回复