asp.net-mvc – Azure下载blob文件流/ memorystream
发布时间:2020-05-25 10:10:42 所属栏目:asp.Net 来源:互联网
导读:我希望用户能够从我的网站下载blob.我想要最快/ cheapeast /最好的方式来做到这一点. 这是我想出的: CloudBlobContainer blobContainer = CloudStorageServices.GetCloudBlobsContainer(); CloudBlockBlob blob = blobContainer.GetBlockBlobRef
|
我希望用户能够从我的网站下载blob.我想要最快/ cheapeast /最好的方式来做到这一点. 这是我想出的: CloudBlobContainer blobContainer = CloudStorageServices.GetCloudBlobsContainer();
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(blobName);
MemoryStream memStream = new MemoryStream();
blob.DownloadToStream(memStream);
Response.ContentType = blob.Properties.ContentType;
Response.AddHeader("Content-Disposition","Attachment; filename=" + fileName + fileExtension);
Response.AddHeader("Content-Length",(blob.Properties.Length).ToString());
Response.BinaryWrite(memStream.ToArray());
Response.End();
我现在正在使用内存流,但我猜我应该使用文件流,因为在某些情况下,blob是大的..对吧? 我尝试使用文件流,但我失败了.想想你可以给我一些文件流代码? 解决方法恕我直言,最便宜,最快的解决方案是从blob存储直接下载.目前,您的代码首先在您的服务器上下载blob并从那里进行流式传输.您可以做的是创建具有读取权限和Content-Disposition标头集的共享访问签名,并基于该创建blob URL并使用该URL.在这种情况下,blob内容将直接从存储流式传输到客户端浏览器.例如,看下面的代码: public ActionResult Download()
{
CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials("accountname","accountkey"),true);
var blobClient = account.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("container-name");
var blob = container.GetBlockBlobReference("file-name");
var sasToken = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Read,SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10),//assuming the blob can be downloaded in 10 miinutes
},new SharedAccessBlobHeaders()
{
ContentDisposition = "attachment; filename=file-name"
});
var blobUrl = string.Format("{0}{1}",blob.Uri,sasToken);
return Redirect(blobUrl);
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 在当前的HTTPContext中生成一个新的ASP.NET会话
- asp.net – 在剃刀中等同于End / Response.End?
- asp.net-mvc – DAL – BLL - GUI组合根.如何设置
- 是否有asp.net的控制台日志?
- 在ASP.Net网站项目中混合VB.Net和C#代码?
- 每个“HttpRequest”在ASP.NET中都有自己的线程吗
- asp.net-web-api – WebAPI:403在发布网站后被禁
- 从代码隐藏调用ASP.NET Web API
- ASP.NET MVC:OutputCache的问题
- asp.net-mvc – 如何使用Wix在IIS 7上安装ASP.Ne
热点阅读
