使用c#从Azure存储中删除Blob



我使用的包是Azure.Storage.Blobs(v12.9.1),我正试图删除一个blob。

下面是我写的代码(我没有得到任何错误):
//path - storage url without token 
public async Task<bool> DeleteFilefromStorage(string path)
{
try
{
BlobServiceClient blobServiceClient = new BlobServiceClient(Helper.StorageCS);
string containerName = Helper.ContainerName;
Uri uri = new Uri(path);
string filename = Path.GetFileName(uri.LocalPath);
BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);
var blob = blobContainerClient.GetBlobClient(filename);
return await blob.DeleteIfExistsAsync();
}
catch
{
throw;
}
}

您的代码失败的原因是因为您的blob URL类似于https://mystorage.blob.core.windows.net/mycontainer/files/ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx,其中文件(ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx)位于一个名为files的虚拟文件夹内。

但是,当您执行string filename = Path.GetFileName(uri.LocalPath);时,它只会返回ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx而不会返回files/ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx

因此,当您试图删除该文件时,您将得到一个404错误。因为DeleteIfExistsAsync方法会吃掉404 (Not Found)错误,所以你不会得到任何错误,但同时blob也不会被删除(因为它不存在)。

最新更新