我以这种形式将文件的uri保存在数据库中:
https://app.blob.core.windows.net/container/Accounts/Images/acc.jpg
但要删除它我只需传递blob名称, 我试试这个时
CloudBlockBlob blockBlob = Container.GetBlockBlobReference(uri);
blob的完整uri
变为:
https://app.blob.core.windows.net/container/https://app.blob.core.windows.net/container/Accounts/Images/acc.jpg
所以我得到404
错误(找不到),
我可以对uri
做一些修剪,但这看起来并不高效。
那么有没有办法通过其完整的URI删除blob / get引用?
答案 0 :(得分:6)
可以使用此constructor创建CloudBlockBlob
:
public CloudBlockBlob(Uri blobAbsoluteUri)
在您的情况下,假设uri是Uri类型而不仅仅是字符串:
CloudBlockBlob blob = new CloudBlockBlob(uri);
如果blob不公开,或者uri不包含SAS凭据(比如您包含的凭据),则可能需要使用凭据。在这种情况下,您需要constructor:
public CloudBlockBlob(Uri blobAbsoluteUri, StorageCredentials credentials)
如Zhaoxing Lu - Microsoft所述,评论
公共访问是只读访问,需要指定存储 帐户密钥或共享访问签名用于删除操作。
答案 1 :(得分:6)
我确实面临过类似的问题,因为我已经有了有效的容器参考,这对我有用:
CloudBlockBlob blockblob = container.GetBlockBlobReference(new CloudBlockBlob(blobUri).Name);
答案 2 :(得分:-1)
您的问题是,使用以下定义的功能GetBlockBlobReference将URI字符串放入Blob名称中:public virtual CloudBlockBlob GetBlockBlobReference(string blobName); 。您将使用月雏菊溶液。