asp.net-mvc – Azure下载blob文件流/ memorystream
发布时间:2020-12-16 04:19:25 所属栏目:asp.Net 来源:网络整理
导读:我希望用户能够从我的网站下载blob.我想要最快/ cheapeast /最好的方式来做到这一点. 这是我想出的: CloudBlobContainer blobContainer = CloudStorageServices.GetCloudBlobsContainer(); CloudBlockBlob blob = blobContainer.GetBlockBlobReference(blob
我希望用户能够从我的网站下载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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 从视图到控制器POST信用卡数据是否安全?
- 如何在ASP.Net 3.5中制作标签,标题和字段标题内容可管理?
- asp.net – 使用JQuery从viewstate获取值?
- asp.net – 第一次访问网站需要非常长的时间(总共最多68秒)
- asp.net – 使用Html而不是csHtml
- ASP.NET应用程序配置IIS后,会出现错误
- ASP.net WebAPI跨域调用问题的解决方法
- asp.net-mvc – 如何用asp.net mvc 3和ListBoxFor显示多个选
- asp.net-mvc – ASP.NET MVC 4如何根据角色提供不同的HTML?
- asp.net-mvc – 如何检查是否为浏览器启用了cookie
推荐文章
站长推荐
热点阅读