Response.Clear()
Response.ContentType = "application/x-msdownload;charset=UTF-8"
Response.AddHeader("Content-Disposition", "attachment;filename=" & Server.UrlEncode(file))
Using fs As New FileStream(file, FileMode.Open, FileAccess.Read)
Dim br As New BinaryReader(fs)
Dim bytesRemain As Integer = fs.Length
Const bufferSize As Integer = 1024
While bytesRemain > 0
Dim bytesToRead As Integer = IIf(bytesRemain > bufferSize, bufferSize, bytesRemain)
Dim bytes(bytesToRead - 1) As Byte
bytesToRead = br.Read(bytes, 0, bytesToRead)
Response.BinaryWrite(bytes)
bytesRemain -= bytesToRead
End While
End Using
Response.Flush()
Response.End()上述代码在下载几M的小文件时没有问题,但我昨天试了一个500M的下载,先是屏幕不动,然后是鼠标不动,然后等了十几分钟,我就手动重启了。我机子配置可不差,奔腾双核,3G内存。请问高手有没有什么好方法?
Response.ContentType = "application/x-msdownload;charset=UTF-8"
Response.AddHeader("Content-Disposition", "attachment;filename=" & Server.UrlEncode(file))
Using fs As New FileStream(file, FileMode.Open, FileAccess.Read)
Dim br As New BinaryReader(fs)
Dim bytesRemain As Integer = fs.Length
Const bufferSize As Integer = 1024
While bytesRemain > 0
Dim bytesToRead As Integer = IIf(bytesRemain > bufferSize, bufferSize, bytesRemain)
Dim bytes(bytesToRead - 1) As Byte
bytesToRead = br.Read(bytes, 0, bytesToRead)
Response.BinaryWrite(bytes)
bytesRemain -= bytesToRead
End While
End Using
Response.Flush()
Response.End()上述代码在下载几M的小文件时没有问题,但我昨天试了一个500M的下载,先是屏幕不动,然后是鼠标不动,然后等了十几分钟,我就手动重启了。我机子配置可不差,奔腾双核,3G内存。请问高手有没有什么好方法?
http://74.125.153.132/search?q=cache:I6rScU3oLooJ:www.cnblogs.com/cancer_xu/archive/2009/12/01/1614616.html+Response.BinaryWrite+%E5%88%86%E5%9D%97&cd=4&hl=en&ct=clnk
<system.web>
<httpRuntime executionTimeout="600" maxRequestLength="512000" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true"/>
</system.web>
这种又耗CPU时间又占内存的代码就不要保留了.实在要这样,就用分块处理吧.
http://topic.csdn.net/u/20070203/13/8f4c7f4e-3b24-4566-bcf2-9a66d6c950c9.html