jindadi 2006-5-15 11:23
请问asp中如何下载文件?
我的代码:
<%
Const ForReading=1
Const TristateTrue=-1
Const FILE_TRANSFER_SIZE=16384
Function downloadFile(Path,MimeType,Filename)
Dim TempFilePath
sent = 0
downloadFile = True
set objFileSystem = Server.CreateObject("Scripting.FileSystemObject")
set objFile = objFileSystem.GetFile(Path)
set objStream = objFile.OpenAsTextStream(ForReading,TristateTrue)
Response.AddHeader "Content-Disposition","attachment;filename=" & Filename
Response.AddHeader "content-length",objFile.Size
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
Do While not objStream.AtEndOfStream
char = objStream.Read(1)
Response.BinaryWrite(char)
sent = sent +1
if(sent MOD FILE_TRANSFER_SIZE) = 0 Then
Response.Flush
if Not Response.IsClientConnected Then
downloadFile = False
Exit Do
End if
End if
Loop
Response.Flush
if Not Response.IsClientConnected Then TransferFile = False
objFile.Close
set objFile = Nothing
objStream.Close
set objStream = Nothing
set objFileSystem = Nothing
End Function
on error resume next
strPath = "E:\test.xls"
MimeType = "application/octet-stream"
strFileName = "test.xls"
sucess = downloadFile(strPath,MimeType,strFileName)
Response.End
%>
可是下载完了是乱码,不知道怎么回事?希望大家帮帮忙!
还有一点很奇怪,我有a.asp和b.asp,a中生成excel,b下载,正常。但是当我把b的代码拷到a中时下载完了就是乱码了。
fengzi147 2006-5-15 11:24
给你看看我收藏的一段下载代码:
将下面的东西存成download.asp
然后你就可以用a herf="http://xxx.xxx.com/download.asp?n=file.doc">download!</a>
来下载了!
fengzi147 2006-5-15 11:24
<%
Response.Buffer = true
Response.Clear
dim url
Dim fso,fl,flsize
dim Dname
Dim objStream,ContentType,flName,isre,url1
'*********************************************调用时传入的下载文件名
Dname=trim(request("n"))
'******************************************************************
If Dname<>"" Then
'******************************下载文件存放的服务端目录
url=server.MapPath("/")&"\"&Dname
'***************************************************
End If
Set fso=Server.CreateObject("Scripting.FileSystemObject")
Set fl=fso.getfile(url)
flsize=fl.size
flName=fl.name
Set fl=Nothing
Set fso=Nothing
%>
<%
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile url
Select Case lcase(Right(flName, 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 ".txt"
ContentType = "text/plain"
Case Else
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "Content-Length", flsize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
response.Clear()
objStream.Close
Set objStream = Nothing
%>