如何从app引擎添加写入谷歌云存储文件?

时间:2014-01-02 05:16:45

标签: google-app-engine google-cloud-storage

此弃用的API支持将内容附加到Google云端存储文件:

FileWriteChannel FileService.openWriteChannel(AppEngineFile file,
                                boolean lock)

但是,

GcsOutputChannel GcsService.createOrReplace(GcsFilename filename,
                               GcsFileOptions options)

似乎不是这样。

这里有什么解决方案?

2 个答案:

答案 0 :(得分:12)

很抱歉告诉您,但每次更换文件都无法完成。

Cloud Services docs 对象不变性

中所述

对象是不可变的,这意味着上传的对象在其整个存储生命周期内无法更改。对象的存储生命周期是成功创建对象(上载)和成功删除对象之间的时间。实际上,这意味着您无法对对象进行增量更改,例如追加操作或截断操作。但是,可以覆盖存储在Google云端存储中的对象,因为覆盖操作实际上是一个删除对象操作,紧接着是上传对象操作。因此,单个覆盖操作只是标记一个不可变对象的生命周期的结束和新的不可变对象的生命周期的开始。

答案 1 :(得分:8)

虽然Google云端存储对象是不可变的,但如果您需要执行有限的追加,可以帮助您: object compose

此操作基本上以新名称连接同一存储桶中的多个对象的内容,如cat file1 file2 > newfile但不重写数据。

因此,您可以创建一个新对象,上传要附加到其中的内容,然后在主文件末尾关闭并随后compose这个新文件。

有一点需要注意:每个对象最多允许1024个“件”,并且组合自身组成的对象计为组成原始件(因此您不能通过迭代撰写来欺骗限制)。