我的代码:
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