如何解决从Azure SAS URI创建BlobContainerClient
在Microsoft.Azure.Storage.Blob库中,您可以使用SAS URI创建Blob上传客户端。
Service
但是,不建议使用此库,而推荐使用Azure.Storage.Blobs。我不确定如何使用SAS URI创建BlobContainerClient的实例,因为该类的构造函数均不允许URI参数。这有可能吗?还是我只需要使用HttpClient调用Blob服务?
解决方法
实际上,它似乎已被弃用,转而支持Azure.Storage.Blobs。
您需要从您要上传到的容器中创建对CloudBlobContainer
的引用:
var connectionString = String.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}",storageAccountName,// your storage account name
accessKey); // your storage account access key
var storageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("my-container");
指定并检索sas URI
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(30);
sasConstraints.Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Create;
var sasUri = blob.GetSharedAccessSignature(sasConstraints);
上传文件:
var cloudBlockBlob = new CloudBlockBlob(new Uri(sasUri));
await cloudBlockBlob.UploadFromFileAsync(@"c:\myfile.txt");
此link
的更多详细信息 ,在库Azure.Storage.Blobs
中,您可以使用以下构造函数创建BlobContainerClient
实例:
public BlobContainerClient(Uri blobContainerUri,BlobClientOptions options = null);
例如,您有一个container sas uri
,如下所示:
"https://xxx.blob.core.windows.net/mycontainer111?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-10-27T08:45:57Z&st=2020-10-27T00:45:57Z&spr=https&sig=xxxxxx";
然后,您可以使用以下代码创建BlobContainerClient
实例:
string sasuri = "https://xxx.blob.core.windows.net/mycontainer111?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-10-27T08:45:57Z&st=2020-10-27T00:45:57Z&spr=https&sig=xxxxxx";
Uri container_uri = new Uri(sasuri);
var container_client = new BlobContainerClient(container_uri);
//other code
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。