请问asp中如何下载文件?

我的代码:

 1   
 2Const ForReading=1   
 3Const TristateTrue=-1   
 4Const FILE_TRANSFER_SIZE=16384   
 5  
 6Function downloadFile(Path,MimeType,Filename)   
 7  
 8Dim TempFilePath   
 9  
10sent = 0   
11  
12downloadFile = True   
13  
14set objFileSystem = Server.CreateObject("Scripting.FileSystemObject")   
15set objFile = objFileSystem.GetFile(Path)   
16set objStream = objFile.OpenAsTextStream(ForReading,TristateTrue)   
17  
18Response.AddHeader "Content-Disposition","attachment;filename=" & Filename   
19Response.AddHeader "content-length",objFile.Size   
20  
21Response.CharSet = "UTF-8"   
22Response.ContentType = "application/octet-stream"   
23  
24Do While not objStream.AtEndOfStream   
25char = objStream.Read(1)   
26Response.BinaryWrite(char)   
27sent = sent +1   
28if(sent MOD FILE_TRANSFER_SIZE) = 0 Then   
29Response.Flush   
30if Not Response.IsClientConnected Then   
31downloadFile = False   
32Exit Do   
33End if   
34End if   
35Loop   
36  
37Response.Flush   
38  
39if Not Response.IsClientConnected Then TransferFile = False   
40  
41objFile.Close   
42set objFile = Nothing   
43  
44objStream.Close   
45  
46set objStream = Nothing   
47set objFileSystem = Nothing   
48End Function   
49  
50on error resume next   
51  
52strPath = "E:\test.xls"   
53MimeType = "application/octet-stream"   
54strFileName = "test.xls"   
55sucess = downloadFile(strPath,MimeType,strFileName)   
56  
57Response.End   

可是下载完了是乱码,不知道怎么回事?希望大家帮帮忙!
还有一点很奇怪,我有a.asp和b.asp,a中生成excel,b下载,正常。但是当我把b的代码拷到a中时下载完了就是乱码了。
---------------------------------------------------------------

给你看看我收藏的一段下载代码:

将下面的东西存成download.asp
然后你就可以用a herf="http://xxx.xxx.com/download.asp?n=file.doc">download! 来下载了!
------------------------------------------------------------

 1   
 2Response.Buffer = true   
 3Response.Clear   
 4  
 5dim url   
 6Dim fso,fl,flsize   
 7dim Dname   
 8Dim objStream,ContentType,flName,isre,url1   
 9'*********************************************调用时传入的下载文件名   
10Dname=trim(request("n"))   
11'******************************************************************   
12If Dname<>"" Then   
13'******************************下载文件存放的服务端目录   
14url=server.MapPath("/")&"\"&Dname   
15'***************************************************   
16End If   
17  
18Set fso=Server.CreateObject("Scripting.FileSystemObject")   
19Set fl=fso.getfile(url)   
20flsize=fl.size   
21flName=fl.name   
22Set fl=Nothing   
23Set fso=Nothing   
 1   
 2Set objStream = Server.CreateObject("ADODB.Stream")   
 3objStream.Open   
 4objStream.Type = 1   
 5objStream.LoadFromFile url   
 6  
 7  
 8Select Case lcase(Right(flName, 4))   
 9Case ".asf"   
10ContentType = "video/x-ms-asf"   
11Case ".avi"   
12ContentType = "video/avi"   
13Case ".doc"   
14ContentType = "application/msword"   
15Case ".zip"   
16ContentType = "application/zip"   
17Case ".xls"   
18ContentType = "application/vnd.ms-excel"   
19Case ".gif"   
20ContentType = "image/gif"   
21Case ".jpg", "jpeg"   
22ContentType = "image/jpeg"   
23Case ".wav"   
24ContentType = "audio/wav"   
25Case ".mp3"   
26ContentType = "audio/mpeg3"   
27Case ".mpg", "mpeg"   
28ContentType = "video/mpeg"   
29Case ".rtf"   
30ContentType = "application/rtf"   
31Case ".htm", "html"   
32ContentType = "text/html"   
33Case ".txt"   
34ContentType = "text/plain"   
35Case Else   
36ContentType = "application/octet-stream"   
37End Select   
38  
39  
40  
41Response.AddHeader "Content-Disposition", "attachment; filename=" & flName   
42Response.AddHeader "Content-Length", flsize   
43  
44Response.Charset = "UTF-8"   
45Response.ContentType = ContentType   
46  
47Response.BinaryWrite objStream.Read   
48Response.Flush   
49response.Clear()   
50objStream.Close   
51Set objStream = Nothing   
52  
Published At
Categories with Web编程
comments powered by Disqus