博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
blob 和 sas
阅读量:4937 次
发布时间:2019-06-11

本文共 3708 字,大约阅读时间需要 12 分钟。

Blob是什么?

请看上篇文章 在使用Blob图片上传的时候碰到许多问题,比如如何使用用户名密码下载文件啊什么的 今天就记录一下我碰到的最大的问题

如何匿名去访问你上传的Blob文件

这篇文章值得一看,多数官方的文档在有时候还是很有用的。尝试了半天,只发现一个方法可以用,使用blobName来生成SAS,再通过SAS生成的Uri+SASToken来访问blob文件。

 

1   private static string GetBlobSasUri(CloudBlobContainer container, string blobName, string policyName = null) 2         { 3             string sasBlobToken; 4  5             CloudBlockBlob blob = container.GetBlockBlobReference(blobName); 6  7             if (policyName == null) 8             { 9                 SharedAccessBlobPolicy adHocSAS = new SharedAccessBlobPolicy()10                 {11                     SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(1),12                     Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Create13                 };14 15                 sasBlobToken = blob.GetSharedAccessSignature(adHocSAS);16 17                 Console.WriteLine("SAS for blob (ad hoc): {0}", sasBlobToken);18                 Console.WriteLine();19             }20             else21             {22                 sasBlobToken = blob.GetSharedAccessSignature(null, policyName);23 24                 Console.WriteLine("SAS for blob (stored access policy): {0}", sasBlobToken);25                 Console.WriteLine();26             }27 28             return blob.Uri + sasBlobToken;29         }

其实官方文档写的很详细了,不过有个参数我不是很懂,policyName ,文档里也没有过多的介绍,不过从代码来看,应该是已知URI,生成token后拼接吧。嗯。。。有空测试一下就知道了。。

官方还有一个比较吸引我的方法

1 private static string GetContainerSasUri(CloudBlobContainer container, string storedPolicyName = null) 2         { 3             string sasContainerToken; 4  5             if (storedPolicyName == null) 6             { 7                 SharedAccessBlobPolicy adHocPolicy = new SharedAccessBlobPolicy() 8                 { 9                     SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),10                     Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.List11                 };12 13                 sasContainerToken = container.GetSharedAccessSignature(adHocPolicy, null);14 15                 Console.WriteLine("SAS for blob container (ad hoc): {0}", sasContainerToken);16                 Console.WriteLine();17             }18             else19             {20                 sasContainerToken = container.GetSharedAccessSignature(null, storedPolicyName);21 22                 Console.WriteLine("SAS for blob container (stored access policy): {0}", sasContainerToken);23                 Console.WriteLine();24             }25 26             return container.Uri + sasContainerToken;27         }

可以直接定位到容器,在容器上直接创建SAS来访问,然而我试了不同的参数,返回了各种各样的错误信息,比如。。

1 
2
AuthenticationFailed3
4 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:2ce78f2c-0001-0023-1773-00b9e0000000 Time:2017-07-19T09:45:48.3088986Z5
6
7 Signature did not match. String to sign used was wl 2017-07-20T09:45:12Z /blob/hollywoodsharestorage/$root 2016-05-318
9
1 
2
AuthenticationFailed3
4 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:4e04d8fe-0001-0020-6471-00bae7000000 Time:2017-07-19T09:29:23.1074413Z5
6
7 Access without signed identifier cannot have time window more than 1 hour: Start [Wed, 19 Jul 2017 09:29:23 GMT] - Expiry [Wed, 19 Jul 2017 18:24:53 GMT]8
9

差不多都是在告诉我,生成的签名不对。。。

是我打开的方式不对,还是有别的使用的方法,这个还需要更深一步研究,希望看到的各位大神,有知晓的,分享一下,感激不尽~

转载于:https://www.cnblogs.com/myblogslh/p/7207250.html

你可能感兴趣的文章
数据清空js清空div里的数据问题
查看>>
Fortran中的指针使用
查看>>
移动终端app测试点总结
查看>>
14-6-27&28自学内容小结
查看>>
JSP
查看>>
---
查看>>
(第一组_GNS3)自反ACl
查看>>
hdu--1258--Sum It Up(Map水过)
查看>>
Spring @DeclareParents 的扩展应用实例
查看>>
VS2012更新Update1后帮助查看器无法打开
查看>>
【Weiss】【第03章】练习3.9:大整数运算包
查看>>
Android 文件的读取和写入
查看>>
高校表白APP-冲刺第四天
查看>>
outlook 设置163邮箱
查看>>
mysql优化——show processlist命令详解
查看>>
Solr服务器搭建
查看>>
画世界怎么用光影_世界绘画经典教程:水彩光影魔法教程
查看>>
win+rsync+php,跨平台的fswatch+rsync同步备份
查看>>
vue2 cdn 加载html,vue项目中使用CDN加载
查看>>
数组转集合踩坑
查看>>