c# - 无法在上传时间上设置 Azure block Blob 元数据

标签 c# azure azure-blob-storage

我有以下代码:

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.

我在互联网上找到了一些可以做到这一点的文章:herehere .

我使用的库:

<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);

enter image description here

关于c# - 无法在上传时间上设置 Azure block Blob 元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59006029/

相关文章:

azure - 如何将数组输出分配给逻辑应用程序变量?

bash - 尝试将 vhd 上传到存储帐户中的 blob 容器时,SAS URI 损坏

c# - 将许多元素渲染到 DrawingVisual

c# - .ToString() 方法如何工作?

c# - 如何在计算模拟器中同时调试多个 Azure 角色?

c# - Silverlight 中的编程绑定(bind)

azure - 在Python中使用Azure Face Api,如果在视频流中检测到同一个人,如何返回单个faceId或一组FaceId?

Azure ApplicationGateWay requestRoutingRules 在已定义时不会被引用

适用于一个容器的 Azure SAS

AZure azcopy Linux - 如何将变量传递给 azcopy