c# - PutBlock 能否用于附加到 Azure 中的现有 BlockBlob

标签 c# azure azure-blob-storage

根据标题,我有一个程序,我尝试使用 PutBlock 方法添加到现有的 BlobkBlob:

    private static void UploadNewText(string text)
    {
        string fileName = "test4.txt";
        string containerString = "mycontainer";

        CloudStorageAccount storage = CloudStorageAccount.Parse(connection);
        CloudBlobClient client = storage.CreateCloudBlobClient();
        CloudBlobContainer container = client.GetContainerReference(containerString);
        CloudBlockBlob blob = container.GetBlockBlobReference(fileName);

        using (MemoryStream stream = new MemoryStream())
        using (StreamWriter sw = new StreamWriter(stream))
        {
            sw.Write(text);
            sw.Flush();
            stream.Position = 0;

            string blockId = Convert.ToBase64String(
                ASCIIEncoding.ASCII.GetBytes("0000005"));

            Console.WriteLine(blockId);

            blob.PutBlock(blockId, stream, null);
            blob.PutBlockList(new string[] { blockId });
        }
    }

据我了解,只要 BlockId 增加(或至少不同),并且大小一致,这应该可行;但是,当我对同一个文件第二次运行它时(无论我是否增加 block ID),它只会用新文本覆盖现有文件。

我意识到还有其他选项可以附加到 blob(例如 AppendBlob),但我很好奇 PutBlock 是否可以专门执行此操作。我想做的事情是否可行?如果可以,我做错了什么?

最佳答案

Can PutBlock be used to append to an existing BlockBlob in Azure

是的,可以。然而,为了做到这一点,您需要以稍微不同的方式进行工作。

您需要做的是:

  1. 首先获取之前提交的阻止列表。您要使用的方法是 DownloadBlockList .
  2. 上传新区 block 。记下其区 block ID。
  3. 将此 block ID 附加到您在第 1 步中下载的 block ID 列表中。
  4. 使用这个新列表调用 put block list。

关于c# - PutBlock 能否用于附加到 Azure 中的现有 BlockBlob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46368954/

相关文章:

azure - 如何使用 postman 将图像上传到azure blob存储

c# - 在 XNA 中每次单击鼠标/按键增加一次

python - Azure 服务器无法对请求进行身份验证

Azure Blob 存储 REST API : Why "Get Blob Properties" and "Get Blob" requests are the same?

c# - 如何使用 MS Graph 将 Azure 门户注册应用程序的范围限制为只能访问 sharepoint 中的特定日历

mysql - 转换 Azure Web App MySql 实现

asp.net-mvc - Azure HTTP 错误 500.0 - MVC 项目

c# - 如何将 IServiceCollection 注册转换为 Autofac 注册?

C# 如何通过分组解析文本文件?

c# - 使用 C# 从字符串中删除 JavaScript 注释