将文本附加到 Azure 中的 Blob
-
05-10-2019 - |
题
看完关于 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().