大文件的文件下载方法 【速度不错】

<%@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 
%>

posted @ 2007-12-04 11:08  快乐就好  阅读(694)  评论(0编辑  收藏  举报