[英]asp.net file download
我想创建一个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
代码段有效,但是我有一个大问题。 在用户确认浏览器下载对话框之前,下载已经开始。 如果用户等待5分钟,那么他已经下载了10gb文件而不接受它。
你有什么解决方案?
谢谢
此代码只需更新即可从网络响应的文件读取
using (WebResponse fileDownloadResponse = fileToDownload.GetResponse())
{
using (Stream fileStream = fileDownloadResponse.GetResponseStream())
{
using (StreamReader fileStreamReader = new StreamReader(fileStream))
{
context.Response.ContentType = "APPLICATION/OCTET-STREAM";
context.Response.AddHeader("Content-Length", fileDownloadResponse.ContentLength.ToString());
string fileName = Path.GetFileNameWithoutExtension(url);
string fileExtension = Path.GetExtension(fileUriBuilder.Uri.AbsolutePath);
context.Response.AddHeader("Content-Disposition", "attachment; filename="+fileName+fileExtension);
byte[] buffer = new byte[4096];
int byteseq = fileStream.Read(buffer, 0, 4096); while (byteseq > 0)
{
context.Response.OutputStream.Write(buffer, 0, byteseq);
context.Response.Flush();
byteseq = fileStream.Read(buffer, 0, 4096);
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.