【发布时间】:2019-05-31 17:29:39
【问题描述】:
我正在使用 Azure SDK for .Net(版本 9.3.1,平台 .NET-Standard 2.0)来处理 Azure Blob 存储,并且在引用 Blob 名称中有空格的块 Blob 时遇到了问题。 我已通过 Azure 存储资源管理器 1.6.1 将块 blob JSON Test.json 上传到私有容器中。
根据 Azure 存储资源管理器的 Blob 属性:
Name: `JSON Test.json`
URI: `https://<myaccountname>/<mycontainername>/JSON%20Test.json`
现在,我正在尝试通过 CloudBlockBlob.ExistsAsync() 方法传递给 GetBlockBlobReference 非编码文件名 JSON Test.json 来检查 Blob 是否存在
结果为 FALSE。
现在,我正在另一个容器中以编程方式创建一个 blob,传递相同的非编码文件名,使用相同的 GetBlockBlobReference,并创建一个带有编码文件名的 blob。
Name: `JSON%20Test.json`
URI: `https://<myaccountname>/<mycontainername2>/JSON%20Test.json`
我做错了什么?为什么在使用非编码文件名引用它时找不到通过 Azure 存储资源管理器创建的名称中有空格的块 blob?当以编程方式创建块 blob 时传递未编码的文件名,为什么文件名通过线路进行编码?
请帮忙。
提前非常感谢!
public async Task<bool> CheckExistsAsync(string connectionString, string containerName, string fileName)
{
var blockBlob = GetBlockBlobReference(connectionString, containerName, fileName);
return await blockBlob.ExistsAsync();
}
private static CloudBlockBlob GetBlockBlobReference(string connectionString, string containerName, string fileName)
{
return CloudStorageAccount
.Parse(connectionString)
.CreateCloudBlobClient()
.GetContainerReference(containerName)
.GetBlockBlobReference(fileName);
}
【问题讨论】:
-
如果答案对您有用,请您帮忙将其标记为答案吗?谢谢。
标签: c# azure-blob-storage azure-sdk-.net