msh*_*hwf 3 c# azure azure-storage
我以这种形式将文件的uri保存在数据库中:
https://app.blob.core.windows.net/container/Accounts/Images/acc.jpg
Run Code Online (Sandbox Code Playgroud)
但是要删除它,我只需要传递blob名称即可
CloudBlockBlob blockBlob = Container.GetBlockBlobReference(uri);
Run Code Online (Sandbox Code Playgroud)
斑点的完整内容uri变为:
https://app.blob.core.windows.net/container/https://app.blob.core.windows.net/container/Accounts/Images/acc.jpg
所以我得到了404错误(未找到),我可以对进行一些修整,uri但这似乎效率不高。那么有没有办法通过其完整URI删除Blob /获取引用?
小智 7
我确实遇到过类似的问题,因为我已经有了有效的容器引用,这对我有用:
CloudBlockBlob blockblob = container.GetBlockBlobReference(new CloudBlockBlob(blobUri).Name);
Run Code Online (Sandbox Code Playgroud)
可以CloudBlockBlob使用以下构造函数创建:
public CloudBlockBlob(Uri blobAbsoluteUri)
Run Code Online (Sandbox Code Playgroud)
在您的情况下,假设uri是Uri类型,而不仅仅是一个字符串:
CloudBlockBlob blob = new CloudBlockBlob(uri);
Run Code Online (Sandbox Code Playgroud)
如果Blob不是公开的,或者uri不包含SAS凭据(例如包含的SAS凭据),则可能需要使用您的凭据。在这种情况下,您将需要以下构造函数:
public CloudBlockBlob(Uri blobAbsoluteUri, StorageCredentials credentials)
Run Code Online (Sandbox Code Playgroud)
正如陆肇星-微软在评论中所说,
公共访问权限是只读访问权限,需要指定存储帐户密钥或共享访问签名才能进行删除操作。
现在,您可以使用该类BlobUriBuilder从 URI 安全地获取 blob 名称,而无需字符串解析或其他方法。
BlobUriBuilder blobUriBuilder = new BlobUriBuilder(new Uri(blobUri));
var sourceBlob = container.GetBlobClient(blobUriBuilder.BlobName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10579 次 |
| 最近记录: |