繁体   English   中英

asp.net文件下载

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM