0

总而言之,我正在尝试找到一种从 Asp.net MVC 4 网站下载大型 blob 文件(约 200MB)的方法,这是我的代码片段。请查看它。谢谢。

string sBlobName ="xxxxx";
Response.ContentType="application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=" + sBlobName);

long lFileSize =200*1024*1024;
int iOffset = 0;
int iBufferSize = 4 * 1024 * 1024;//MB

while (iOffset < lFileSize)
{
    //Chunk read blob into a byte array
    var bData = StorageHelper.ChunkReadPackage(sContainerName, sPackFullPath, iOffset, iBufferSize);
    Response.BinaryWrite(bData);
    iOffset += bData.Length;
}
Response.Flush();
Response.End();

return new EmptyResult();

似乎在从 blob 读取的所有块都通过 Response.BinaryWrite() 发送到客户端之后,我的 Firefox 可以向我弹出下载对话框窗口。

我的问题

为什么需要 Response.BinaryWrite() 整个内容?有没有办法让这个过程更有效?我的意思是,在将第一块 blob 发送到客户端之后,是否有办法在客户端下载流。而是等待所有内容被发送到客户端。

4

1 回答 1

1

Response.BufferOutput = false; 有用。

于 2012-11-01T03:52:06.867 回答