在网站中下载Azure Blob

时间:2012-10-31 09:37:09

标签: asp.net-mvc-4 download httpresponse

所有,我试图找到一种从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发送到客户端后,有一种方法可以在客户端下载流。而是等待所有内容发送到客户端。

1 个答案:

答案 0 :(得分:1)

Response.BufferOutput = false;它有效。