asp的一个下载功能页面,就是把文件直接传给客户端的方式

<%
filepath
=request.querystring("filepath")
filenames
=Split(filepath,"/")
filename
=filenames(1)
Const ForReading=1
Const TristateTrue=-1 'Unicode
Const FILE_TRANSFER_SIZE=16384 '16k
'
Use the following line for IIS4/PWS - this is the default for IIS5
Response.Buffer = True

Function TransferFile(path, mimeType, filename)
Dim objFileSystem, objFile, objStream
Dim char
Dim sent
send
=0
TransferFile 
= True

Set objFileSystem = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFileSystem.GetFile(Path)
Set objStream = objFile.OpenAsTextStream(ForReading, TristateTrue)

Response.AddHeader 
"content-type", mineType

Response.ContentType 
= "application/octet-stream"

response.AddHeader 
"Content-Disposition","attachment;filename="&filename 
Response.AddHeader 
"content-length", objFile.Size

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
TransferFile 
= False
Exit Do
End If
End If
Loop

Response.Flush
If Not Response.IsClientConnected Then TransferFile = False

objStream.Close
Set objStream = Nothing
Set objFileSystem = Nothing
End Function

Dim path, mimeType, sucess

path 
= Server.MapPath(filepath)
mimeType 
= "application/octet-stream" 
sucess 
= TransferFile(path, mimeType,filename)

Response.End
%
>
posted @ 2005-12-22 13:40  Aowind  阅读(1559)  评论(2编辑  收藏  举报