我有使用Java創建的GAE應用程序。我有一個文件夾和文件桶,我試圖將其複製到同一個項目中的另一個存儲桶中。 我的桶的文件夾結構如下:無法使用Google Cloud Storage JSON API複製文件夾
Bucket_test
|-------Folder1/
|-----testtxt1.txt
|-------Folder2/
|-----testtxt2.txt
我試圖複製在使用下面的代碼
String old_bucket = "Bucket_test";
String new_bucket = "Bucket_test_new";
Bucket isbkt = new GoogleStorageHelper()
.tryCreateBucket(new_bucket, storage);
Storage.Objects.List listObjects = storage.objects().list(old_bucket);
Objects objects;
objects = listObjects.execute();
for (StorageObject object
: objects.getItems()) {
Storage.Objects.Copy copyObject
=
storage.objects()
.copy(old_bucket, object.getName(), new_bucket, object.getName(), object);
try {
System.out.println("Trying to copy over " + object.getName() + " from " + old_bucket + " >>>> " + new_bucket);
//copy the file over to the new bucket
Object copyRes = copyObject.execute();
System.out.println(copyRes.toString());
}
catch (Exception e) {
System.out.println("Exception trying to copy over " + object.getName() + " " + e.getLocalizedMessage());
}
發生了什麼對象? 我得到以下錯誤:
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Invalid bucket name: 'Bucket_test/Folder1'.",
"reason" : "invalidParameter",
"extendedHelp" : "https://developers.google.com/storage/docs/bucketnaming"
} ],
"message" : "Invalid bucket name: 'Bucket_test/Folder1'."
}
}
應該不是發生什麼事?
我期望它複製文件和文件夾,因爲兩者都被認爲是對象。我成功地將文件複製過來,如果它們直接在存儲桶中而不在任何文件夾中。
- 是否有另一種方法來複制文件和文件夾?
- 我是否需要使用前綴和分隔符列出它們SRC:https://cloud.google.com/storage/docs/json_api/v1/objects/list?
我能夠使用setPrefix(「Folder1」)列出所有對象,但仍然出現此錯誤。我甚至嘗試過他們的'重寫'方法,但它似乎給了我同樣的錯誤。有什麼想法嗎? –
@c f。你有這方面的更新嗎?我遇到了同樣的問題,並嘗試了幾種方法,但都無效。 – user2153006