【发布时间】:2018-08-13 17:46:10
【问题描述】:
要下载的 HTML 链接:
<a asp-action="DownloadFile" asp-route-id="@Model.ID">@Html.DisplayFor(model => model.BlobName)</a>
Generated HTML link: http://localhost:50325/DebitMemos/DownloadFile/76
对应的控制器:
public async Task<IActionResult> DownloadFile(int id)
{
var debitMemo = await _context.DebitMemo
.SingleOrDefaultAsync(m => m.ID == id);
CloudBlockBlob blockBlob;
MemoryStream ms = new MemoryStream();
try
{
CloudBlobContainer container = DebitMemo.GetAzureContainer();
blockBlob = container.GetBlockBlobReference(debitMemo.BlobName);
await container.CreateIfNotExistsAsync();
// Save blob contents to a file.
await blockBlob.DownloadToStreamAsync(ms);
Stream blobStream = await blockBlob.OpenReadAsync();
return File(blobStream, blockBlob.Properties.ContentType, debitMemo.BlobName);
}
catch (StorageException)
{
return Content("File does not exist");
}
}
单击 Chrome 中的链接会提示输入文件下载位置,然后成功下载。
另一方面,Internet Explorer(我需要应用程序在其中工作)说“您要从 localhost 打开还是保存 76 (1.54 KB)?”
那个例子中的“76”是debitMemo的ID,我不知道为什么它叫它而不是blobName。然后,当我点击保存时,它只显示“76 无法下载”。没有其他解释。
如果我还需要提供任何其他信息,请告诉我。
【问题讨论】:
标签: c# asp.net-mvc internet-explorer azure-blob-storage