使用 C# 从 Azure 存储中删除 Blob
Deleting Blob from Azure storage using C#
我正在使用的包是 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);
时,它只会 return ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx
而不会 files/ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx
。
因此当您尝试删除该文件时,您将收到 404 错误。由于 DeleteIfExistsAsync
方法会吃掉 404 (Not Found)
错误,你不会得到任何错误,但同时 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);
时,它只会 return ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx
而不会 files/ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx
。
因此当您尝试删除该文件时,您将收到 404 错误。由于 DeleteIfExistsAsync
方法会吃掉 404 (Not Found)
错误,你不会得到任何错误,但同时 blob 也不会被删除(因为它不存在)。