asp做文件下载

wanbb 2004-01-14 09:38:50
要求不管什么文件类型,文件名支持英中文,点击连接后弹出保存对话框,我查询了以前的贴字,要不就是不支持中文(含空格也不行)的,要不就是对话框中的文件名及文件类型不对,希望那位能帮忙,分数可再加
...全文
1102 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
纪俊 2004-01-17
  • 打赏
  • 举报
回复
download.asp?filename="相对目录+文件名"
wanbb 2004-01-16
  • 打赏
  • 举报
回复
to superdullwolf(超级大笨狼):

我明白了一点,就是download.asp?filename=" " 的""里面是当前目录中的文件名,但我的文件却在其它目录中,又该怎么写呢?
超级大笨狼 2004-01-16
  • 打赏
  • 举报
回复

下载任何文件(尤其是IE关联打开的)
第一个文件连接处这么写
<a name="download"
href="<%if 是会员 then response.write "download.asp?filename=" & myfilename%>">
下载<%=myfilename%></a>

第二个文件:
<%
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
%>


flyingding 2004-01-16
  • 打赏
  • 举报
回复
to wanbb
我用的是好好的呀!不管什么文件类型,文件名支持英中文(含空格),点击连接后弹出保存对话框,对话框中的文件名及文件类型都对。
wanbb 2004-01-15
  • 打赏
  • 举报
回复
up
flying310 2004-01-14
  • 打赏
  • 举报
回复
写好路径就可以下载了.
wanbb 2004-01-14
  • 打赏
  • 举报
回复
to flyingding() : 这个我也试了,还不如我用的那段代码
qing205 2004-01-14
  • 打赏
  • 举报
回复
对话框中的文件类型不对正常别管它
在这里做限制就可以!
Select Case lcase(Right(fName, 4))
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/html"
Case ".txt"
ContentType = "text/plain"
Case Else
ContentType = "application/octet-stream"
End Select
flyingding 2004-01-14
  • 打赏
  • 举报
回复

你写一个DL.asp文件,这个文件源码如下:
****************************************
<%
Response.Buffer = true
Response.Clear

'获取要下载的文件在服务器上的绝对位置
dlfile=trim(request("dlfile"))
If dlfile<>"" Then
fileurl=server.MapPath(dlfile)
Else
Response.end
End If

'创建Myfso,使用FSO组件
Set Myfso=Server.CreateObject("Scripting.FileSystemObject")
Set f=Myfso.getfile(fileurl) '定义FSO对象f
fsize=f.size '文件大小
fName=f.name '文件名字
Set f=Nothing '释放f
Set Myfso=Nothing '释放MyFso

'使用Adodb.Stream组件
Set MyStream = Server.CreateObject("ADODB.Stream")
MyStream.Open
MyStream.Type = 1
MyStream.LoadFromFile fileurl

'读取文件类型,让系统识别,以存为不同类型的文件。
Select Case lcase(Right(fName, 4))
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/html"
Case ".txt"
ContentType = "text/plain"
Case Else
ContentType = "application/octet-stream"
End Select

'下载
Response.AddHeader "Content-Disposition", "attachment; filename=" & fName
Response.AddHeader "Content-Length", fsize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite MyStream.Read
Response.Flush

'释放MyStream
MyStream.Close
Set MyStream = Nothing
%>
********************************
然后你在要实现的页面中这样调用:

*****************************************
<a href="dl.asp?dlfile=dl.doc">dl.doc</a>
*****************************************
本源码程序可以下载各种文件,包括asp源码、mp3、htm、TXT等等。
wanbb 2004-01-14
  • 打赏
  • 举报
回复
但是如果是txt文件就会打开,我要的是不管什么文件都可以弹出保存对话框,现在我用的是下面的代码,但好象在对话框中文件名及类型不对
<%
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
%>
xieyj 2004-01-14
  • 打赏
  • 举报
回复
一般你下载文件带上文件扩展名的,保存时IE会自动取的
cdsun 2004-01-14
  • 打赏
  • 举报
回复
不错
minghui000 2004-01-14
  • 打赏
  • 举报
回复
关注
flyingding 2004-01-14
  • 打赏
  • 举报
回复
你把要求说明白点

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧