我有以下代码:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Environment.GetEnvironmentVariable("AzureWebJobsStorage"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("images");
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(filename);
using (var stream = new MemoryStream(imageBytes))
{
blockBlob.Properties.ContentType = contentType;
blockBlob.Metadata.Add("MyMetadataProperty1", "MyMetadataValue1");
blockBlob.Metadata.Add("MyMetadataProperty2", "MyMetadataValue2");
blockBlob.Metadata.Add("MyMetadataProperty3", "MyMetadataValue3");
blockBlob.Metadata.Add("MyMetadataProperty", "MyMetadataValue4");
// await blockBlob.SetMetadataAsync(); // Microsoft.WindowsAzure.Storage: The specified blob does not exist.
await blockBlob.UploadFromStreamAsync(stream);
}
我无法设置上传时间的元数据。
如果我打电话await blockBlob.SetMetadataAsync();
之前UploadFromStreamAsync()
,我收到错误:Microsoft.WindowsAzure.Storage: The specified blob does not exist.
我在互联网上找到了一些可以做到这一点的文章:here和 here .
我使用的库:
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="3.0.10" />
有什么想法为什么我会遇到这个错误吗?
最佳答案
查看该方法的说明:SetMetadataAsync .
Initiates an asynchronous operation to update the blob's metadata.
它用于更新元数据,因此实际上如果您想在上传 Blob 时设置元数据,只需设置 blockBlob.Metadata.Add(key, value)
或 blockBlob 即可。元数据[键] =“值”
。下面是我的测试代码。
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("connection string");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("test");
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference("1.txt");
var filePath = "C:\\Users\\georgec\\Downloads\\test.txt";
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
blockBlob.Metadata["mymetadata"] = "mymetadatavalue";
//blockBlob.SetMetadataAsync();
await blockBlob.UploadFromStreamAsync(fileStream);
关于c# - 无法在上传时间上设置 Azure block Blob 元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59006029/