是否可以更新 GCS 中的 blob 内容?

osh*_*hai 1 java google-cloud-storage

我想将一个文件写入 GCS 存储桶,如果它存在就覆盖它。
python文档显示可以使用blob.upload_from_string('New contents!').

对于 Java,我只找到了删除/创建(更新只是更新元数据)。
所以我的代码目前这样做:

  public boolean doesObjectExist(String bucketName, String objectName) {
    Blob object = storage.get(bucketName, objectName);
    return object != null;
  }

  public void uploadObject(String bucketName, String objectName, String content) {
    BlobId blobId = BlobId.of(bucketName, objectName);
    BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("text/plain").build();
    if (doesObjectExist(bucketName, objectName)){
      storage.delete(bucketName, objectName);
    }
    storage.create(blobInfo, content.getBytes(UTF_8));
  }
Run Code Online (Sandbox Code Playgroud)

是否有通过Java API覆盖的内容?

gui*_*ere 5

您无法更新 Blob 内容(即使在 Python 中!)。您只能创建、删除、读取。你不能移动,你不能重命名。这两个操作执行创建(使用新名称/目标)和删除(旧名称)。

那么现在,您如何覆盖现有内容:只需编写内容。如果存在,它将被替换。如果您在存储桶上激活了版本控制,则以前的版本保留为非当前版本,上传的内容作为实时版本提供。