【问题标题】:How to upload file into folder present in GCS bucket android如何将文件上传到 GCS 存储桶 android 中存在的文件夹中
【发布时间】:2020-09-28 16:09:35
【问题描述】:

我正在按照这个 github 教程将文件上传到 GCS 存储桶中

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();
        }
    }

希望对此有所帮助,谢谢。

【问题讨论】:

  • 您好,只是为了确定一下,您是否已经在您的项目中创建了 GCS 存储桶?如果是这样,它有那个名字(“ks_bucket”)吗?
  • 是的,我可以将文件上传到存储桶,但我想将文件上传到存储桶内的文件夹

标签: java android google-cloud-storage


【解决方案1】:

您在此处尝试设置一个包含“/”的存储桶名称,这在 Cloud Storage 中无效。您需要做的是在将文件插入存储桶之前更改文件的名称,包括其文件夹名称。 setName 是你需要在这里使用的:

insert.setName('folder/filename');

类似的东西

【讨论】:

  • 谢谢@methkal khalawi
猜你喜欢
  • 1970-01-01
  • 2022-11-04
  • 2022-10-09
  • 2020-01-24
  • 2018-12-20
  • 2021-06-13
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多