#java #android #google-cloud-storage
#java #Android #google-облачное хранилище
Вопрос:
я следую этому руководству по github для загрузки файлов в GCS bucket
https://github.com/thorrism/GoogleCloudExample
изображения успешно загружаются в корзину.
но я хочу загрузить файл в папку, присутствующую внутри корзины
например
KS_bucket — это имя корзины, а images — это имя папки, присутствующее внутри KS_bucket.
я попытался указать имя корзины следующим образом
KS_bucket/images или KS_bucket/images/
но я получаю ошибку недопустимого имени корзины
. W/System.err: {
2020-09-27 13:04:01.416 32172-32247/com. W/System.err: "code" : 400,
2020-09-27 13:04:01.416 32172-32247/com. W/System.err: "errors" : [ {
2020-09-27 13:04:01.416 32172-32247/ W/System.err: "domain" : "global",
2020-09-27 13:04:01.416 32172-32247/com. W/System.err: "message" : "Invalid bucket name: 'kS_bucket/images'",
2020-09-27 13:04:01.416 32172-32247/com. W/System.err: "reason" : "invalid"
2020-09-27 13:04:01.416 32172-32247/com. W/System.err: } ],
2020-09-27 13:04:01.416 32172-32247/com. W/System.err: "message" : "Invalid bucket name: 'ks_bucket/images'"
2020-09-27 13:04:01.416 32172-32247/com..W/System.err: }
метод, который я использую для загрузки
public static void uploadFile(String bucketName, String filePath)
throws Exception {
Storage storage = getStorage();
StorageObject object = new StorageObject();
object.setBucket(bucketName);
File file = new File(filePath);
InputStream stream = new FileInputStream(file);
try {
String contentType = URLConnection
.guessContentTypeFromStream(stream);
InputStreamContent content = new InputStreamContent(contentType,
stream);
Storage.Objects.Insert insert = storage.objects().insert(
bucketName, null, content);
insert.setName(file.getName());
insert.execute();
} finally {
stream.close();
}
}
ожидая некоторой помощи в этом, спасибо.
Комментарии:
1. Привет, просто чтобы убедиться, вы уже создали GCS bucket в своем проекте? Если да, есть ли у него такое имя («ks_bucket»)?
2. да, я могу загружать файлы в корзину, но я хочу загружать файлы в папку внутри корзины
Ответ №1:
здесь вы пытаетесь задать имя корзины с «/», которое недопустимо в облачном хранилище. что вам нужно сделать, это изменить имя файла, включая имя его папки, перед тем, как вставить его в корзину. setName
это то, что вам нужно использовать здесь:
insert.setName('folder/filename');
что-то вроде этого
Комментарии:
1. Спасибо @methkal khalawi