0
所有的,我想找到一种方法来从Asp.net MVC 4网站下载一个大的blob文件(大约200MB),这里是我的代码片段。请检查它。谢谢。在网站下载Azure Blob
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发送到客户端之后在客户端下载流。等待所有内容被发送到客户端。
为什么不只是使用Azure存储客户端API? – AbdElRaheim
@AbdElRaheim对不起,我没有明白你的意思,当然我在函数'StorageHelper.ChunkReadPackage'中使用Azure存储API,然后将块发送到客户端。你有没有检查我的代码?或者,我错过了什么? –
我相信它与天青无关。所以我没有在我的文章中添加Azure标签 –