[英]Create BlobContainerClient from Azure SAS URI
In the Microsoft.Azure.Storage.Blob library you could create a blob upload client using a SAS URI.在 Microsoft.Azure.Storage.Blob 库中,您可以使用 SAS URI 创建 blob 上传客户端。
var cloudBlockBlob = new CloudBlockBlob(blobSasUri);
However, this library has been deprecated in favor of Azure.Storage.Blobs.但是,此库已被弃用,取而代之的是 Azure.Storage.Blobs。 I am unsure how to create an instance of BlobContainerClient using a SAS URI since none of the class's constructors allow for a URI parameter.我不确定如何使用 SAS URI 创建 BlobContainerClient 的实例,因为该类的构造函数均不允许使用 URI 参数。 Is this even possible?这可能吗? Or do I need to just use an HttpClient to call the Blob service?或者我是否只需要使用 HttpClient 来调用 Blob 服务?
In the library Azure.Storage.Blobs
, you can create the BlobContainerClient
instance by using this constructor:在库Azure.Storage.Blobs
中,您可以使用此构造函数创建BlobContainerClient
实例:
public BlobContainerClient(Uri blobContainerUri, BlobClientOptions options = null);
For example, you have a container sas uri
like below:例如,您有一个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";
Then you can use the code below to create BlobContainerClient
instance:然后你可以使用下面的代码创建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
Indeed, it seems that it has been deprecated in favor of Azure.Storage.Blobs.事实上,它似乎已被弃用,取而代之的是 Azure.Storage.Blobs。
You need to create get a reference to the CloudBlobContainer
from the container where you want to upload to:您需要从要上传到的容器中创建对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");
Specify and retrieve the sas URI指定并检索 sas URI
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(30);
sasConstraints.Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Create;
var sasUri = blob.GetSharedAccessSignature(sasConstraints);
Upload files:上传文件:
var cloudBlockBlob = new CloudBlockBlob(new Uri(sasUri));
await cloudBlockBlob.UploadFromFileAsync(@"c:\myfile.txt");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.