【发布时间】:2011-09-01 07:52:40
【问题描述】:
我想创建一个 asp.net 下载页面。我从数据服务接收文件作为字节数组。文件大小可达 10GB。所以我需要“分部分”传输文件。
这是我的代码:
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", _
"attachment; filename=" & HttpUtility.UrlEncode(file.Name))
Do
If Not Response.IsClientConnected Then
Exit Do
End If
result =ReadByte(offset,length) 'read next byte array
Response.BinaryWrite(fresult.Data)
Response.Flush()
Loop Until 'all bytes read
代码 sn-p 有效,但我有一个大问题。在用户确认浏览器下载对话框之前下载已经开始。如果用户等待 5 分钟,他已经下载了 10gb 的文件而没有接受它。
你有什么解决办法吗?
谢谢
【问题讨论】:
-
据我所知,所有下载都是这样工作的。服务器不会等到确认按钮被按下(它会怎么告诉?)。它只是响应浏览器请求的内容。
-
我同意 Oded 这是一个浏览器功能,以及为什么有时文件在您选择位置之前就已完成。那不是确认提示,当时他们已经被认为已经确认文件下载是他们想要做的事情。
-
您必须强制下载过程将第一个字节块推送到浏览器,以便它提示用户确认...请参阅下面的代码..它适用于我的网络响应我想从 url 下载文件,你可以更新它以使其下载文件。