大文件的文件下载方法 【速度不错】
<%@language=VBscript%>
<%
Const ForReading=1
Const TristateTrue=-1
Const FILE_TRANSFER_SIZE=16384
Response.Buffer = True
Dim path, mimeType, sucess,downfilename
mimeType="text/plain"
downfilename="files\t.rmvb"
path = Server.MapPath(downfilename)
sucess = TransferFile(path,mimeType,downfilename)
Response.End
Function TransferFile(path, mimeType, filename)
On error resume next
Dim objFileSystem, objFile, objStream
Dim char
Dim sent
send=0
TransferFile = True
Set objFileSystem = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFileSystem.GetFile(Path)
If Err Then
Response.write "下载文件错误,请与管理员联系."
Response.End
End If
'产生随机名字
TempFileName = Split(path,"\")(Ubound(Split(path,"\")))
Set objStream = objFile.OpenAsTextStream(ForReading, TristateTrue)
Response.AddHeader "content-type", mimeType
response.AddHeader "Content-Disposition","attachment;filename=" & TempFileName
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
%>