4

在看了这个关于 blobs: channel 9的教程之后,我正在考虑使用一个 blob 容器来保存一堆推文(存储每条推文的 json)。理想情况下,我想为一天中的每个小时创建一个 blob 引用,并在新推文进入时将新推文附加到该 blob。问题是 UploadText(string) 方法覆盖了 blob 的现有内容,是否有一个简单的将文本附加到现有 blob 的方法?

谢谢!

        fun (json:string) ->  
                    let account = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("DataConnectionString"))
                    let blobs = account.CreateCloudBlobClient();
                    let tempBlob = blobs.GetBlobReference("tweets/2010-9-26/17/201092617.txt")
                    tempBlob.Properties.ContentType <- "text/plain"
                    tempBlob.UploadText(json)
4

3 回答 3

8

Azure 现在支持追加 Blob。创建新 blob 时,必须将其定义为追加块。您不能追加到现有的块 blob。

这是一些您可以使用的简单代码。

附加:

CloudAppendBlob appendBlob = container.GetAppendBlobReference("myblob.txt")
appendBlob.AppendText("new line");

读:

appendBlob.DownloadText()

Technet 包含一个很好的关于这个主题的教程。此外,官方 Azure 文档现在还包括使用 Append Blob 的帮助。

于 2015-12-11T09:50:50.627 回答
4

页面 Blob是满足这种需求的方法。(与块 blob 相比)

您可以使用 Put Blob 操作创建 Blob:http: //msdn.microsoft.com/en-us/library/dd179451.aspx

然后您可以使用 Put 页面操作添加“页面”:http: //msdn.microsoft.com/en-us/library/ee691975.aspx

Page Blob 将立即修改添加的页面,更准确地模仿传统文件系统。

块 blob 将期待更复杂的构造,并需要两阶段提交/提交构造。编译后,您必须覆盖以修改 blob。块 blob 设计用于静态(松散定义)内容的流式传输,而不是作为读/写存储。添加了页面 Blob 以支持这些方案。

于 2010-09-27T15:44:54.913 回答
1

您可以尝试通过CloudBlockBlob.DownloadBlockList()方法获取已提交块的列表,然后通过CloudBlockBlob.PutBlock()附加新内容。

于 2010-09-27T08:27:53.540 回答