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 楼答案
我在尝试将一个对象从一个地方复制到另一个地方时,出现了完全错误。解决方案是将newObject设置为null: