有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Google云存储中的java复制对象

我正在使用Java client for Google Cloud Platform将一个对象从一个bucket中复制到同一个bucket中的不同位置

为了做到这一点,我按照说明here,但我得到了一个GoogleJsonResponseException 404 Bad Request

class com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Required",
    "reason" : "required"
  } ],
  "message" : "Required"
}

这是我的代码:

GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("key.json"))
                    .createScoped(Collections.singleton(StorageScopes.CLOUD_PLATFORM));

            storageClient = new Storage.Builder(httpTransport, jsonFactory, credential).build();

 StorageObject newObject = new StorageObject();
            newObject.setName(newName);

            Storage.Objects.Copy request = storageClient.objects().copy(bucketName, objectName, bucketName, newName, newObject);
            request.setDestinationPredefinedAcl("publicread");

            request.execute();

到目前为止,这是唯一一个失败的操作,上传、下载、getLength和其他一些操作都可以正常工作

更新:

我成功地将这一行删除:

request.setDestinationPredefinedAcl("publicread");

不管怎样,我想知道出了什么问题,因为在未来,我希望能够选择新对象是公共的还是私人的


共 (1) 个答案

  1. # 1 楼答案

    我在尝试将一个对象从一个地方复制到另一个地方时,出现了完全错误。解决方案是将newObject设置为null:

    Storage.Objects.Copy request = storageClient.objects().copy(bucketName, objectName, bucketName, newName, null);