看完关于 blob 的教程后: 频道 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)
有帮助吗?

解决方案

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

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

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

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

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

其他提示

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

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

附加:

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

读:

appendBlob.DownloadText()

Technet 包含一个很好的教程 就此主题而言。还有 Azure 官方文档 现在包括使用追加 Blob 的帮助。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top