Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 将文本附加到Azure中的Blob_Windows_Azure_Azure Storage_Blobs - Fatal编程技术网

Windows 将文本附加到Azure中的Blob

Windows 将文本附加到Azure中的Blob,windows,azure,azure-storage,blobs,Windows,Azure,Azure Storage,Blobs,在阅读了关于blob的教程之后,我考虑使用blob容器来保存一组tweet(存储每个tweet的json)。理想情况下,我想为一天中的每一小时创建一个blob引用,并在blob出现时向其添加新的tweet。问题是UploadText(string)方法会覆盖blob的现有内容,有没有一种简单的方法可以将文本附加到现有blob 谢谢 fun (json:string) -> let account = CloudStorageAcc

在阅读了关于blob的教程之后,我考虑使用blob容器来保存一组tweet(存储每个tweet的json)。理想情况下,我想为一天中的每一小时创建一个blob引用,并在blob出现时向其添加新的tweet。问题是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)
fun(json:string)->
let account=CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(“DataConnectionString”))
让blobs=account.CreateCloudBlobClient();
让tempBlob=blobs.GetBlobReference(“tweets/2010-9-26/17/201092617.txt”)

tempBlob.Properties.ContentType您可以尝试通过CloudBlockBlob.DownloadBlockList()方法获取提交块的列表,然后通过CloudBlockBlob.PutBlock()页面blob追加新内容。(与块blob相比)

使用Put blob操作创建blob:

然后,您可以使用Put page操作添加“页面”:

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

块blob需要一个更具ridig的构造,并且需要一个两阶段的提交/提交构造。编译后,您必须覆盖到blob。块blob是为静态(松散定义)内容流而设计的,而不是作为读/写存储。添加页面blob是为了支持这些场景。

Azure现在支持这些场景。创建新blob时,必须将其定义为附加块。不能附加到现有块Blob

下面是一些您可以使用的简单代码

追加:

CloudAppendBlob appendBlob = container.GetAppendBlobReference("myblob.txt")
appendBlob.AppendText("new line");
appendBlob.DownloadText()
阅读:

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

关于这个问题。现在还包括使用Append Blob的帮助。

@tishon感谢您的帮助。我将尝试一下页面blob页面和块blob之间的选择实际上更多的是优化大块&顺序读取(块blob)或小块以及随机访问读写(页面blob)。您确实可以将块附加到块blob,并重新提交更新的块列表(您还可以删除、插入和替换)。这个答案随着附加blob的引入而过时。改为使用Append Blob。似乎有必要在“AppendText()”之前调用“appendBlob.CreateOrReplace()”AppendBlock API是否公开给Azure Powershell?