Azure Blob 存储下载文件,而不是在浏览器中打开
本文关键字:浏览器 存储 Blob 下载 文件 Azure | 更新日期: 2023-09-27 17:57:23
我正在使用此代码将文件上传到Azure blob存储,其中container
是我的CloudBlobContainer
public void SaveFile(string blobPath, Stream stream)
{
stream.Seek(0, SeekOrigin.Begin);
CloudBlockBlob blockBlob = container.GetBlockBlobReference(virtualPath);
blockBlob.Properties.ContentDisposition =
"attachment; filename=" + Path.GetFileName(virtualPath);
blockBlob.UploadFromStream(stream);
}
然后,当用户单击我的网页中的文件时,我正在尝试触发下载,提示他们保存/打开该文件。我通过调用一个返回重定向到 blob URL 的操作来做到这一点。
public ActionResult LoadFile(string path)
{
string url = StorageManager.GetBlobUrlFromName(path);
return Redirect(url);
}
问题是这将在浏览器中打开文件,例如,当用户期望他们留在我的页面上但开始下载文件时,用户将被重定向离开我的网站并在浏览器中显示一个.jpg文件。
您可能错过的是设置属性后调用blockBlob.SetProperties()
。
在我的代码上,它看起来像这样:
blob.CreateOrReplace();
blob.Properties.ContentType = "text/plain";
blob.Properties.ContentDisposition = "attachment; filename=" + Path.GetFileName(blobName);
blob.SetProperties(); // !!!
实现所需目标的一种方法是让 MVC 操作从 blob 存储中提取映像并返回文件,即:
public ActionResult LoadFile(string path)
{
byteArray imageBytes = ....get img from blob storage
return File(byteArray, "image/png", "filename.ext");
}