asp.net mvc - 在MVC3中下載Azure Blob文件




asp.net-mvc asp.net-mvc-3 (2)

我們的ASP.NET MVC 3應用程序在Azure上運行,並使用Blob作為文件存儲。 我找到了上傳部分。

視圖將具有文件名,單擊該文件名時將提示文件下載屏幕出現。

誰能告訴我怎麼去做這個?


兩個選項真的......第一個是直接將用戶重定向到blob(如果blob在公共容器中)。 這看起來有點像:

return Redirect(container.GetBlobReference(name).Uri.AbsoluteUri);

如果blob位於私有容器中,您可以使用共享訪問簽名並像上一個示例一樣進行重定向,也可以在控制器操作中讀取blob並將其下載到客戶端作為下載:

Response.AddHeader("Content-Disposition", "attachment; filename=" + name); // force download
container.GetBlobReference(name).DownloadToStream(Response.OutputStream);
return new EmptyResult();

我注意到從action方法寫入響應流會弄亂HTTP頭。 某些預期標頭丟失,而其他標頭未正確設置。

因此,我不是寫入響應流,而是將blob內容作為流獲取並將其傳遞給Controller.File()方法。

CloudBlockBlob blob = container.GetBlockBlobReference(blobName);
Stream blobStream = blob.OpenRead();
return File(blobStream, blob.Properties.ContentType, "FileName.txt");




azure-storage-blobs