2012-10-31 86 views
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發送到客戶端之後在客戶端下載流。等待所有內容被髮送到客戶端。

+0

爲什麼不只是使用Azure存儲客戶端API? – AbdElRaheim

+0

@AbdElRaheim對不起,我沒有明白你的意思,當然我在函數'StorageHelper.ChunkReadPackage'中使用Azure存儲API,然後將塊發送到客戶端。你有沒有檢查我的代碼?或者,我錯過了什麼? –

+0

我相信它與天青無關。所以我沒有在我的文章中添加Azure標籤 –

回答

1

Response.BufferOutput = false;它的工作原理。