【问题标题】:"Forbidden" error when uploading file through Google Cloud Storage API通过 Google Cloud Storage API 上传文件时出现“禁止”错误
【发布时间】:2013-06-16 04:11:18
【问题描述】:

我正在使用“google-api-services-storage-v1beta2-rev5-java-1.15.0-rc.zip”谷歌云存储库以及来自here的“StorageSample.java”示例程序

我已按照示例程序的设置说明设置了“client_secrets.json”和“sample_settings.json”文件。示例程序编译正常,但仅部分运行正常。

我修改了“StorageSample.java”程序的“uploadObject”方法,让它上传我创建的测试文件(而不是上传随机生成的文件)。程序通过以下方式运行正常:

tryCreateBucket();
getBucket();
listObjects();
getObjectMetadata();

但是,当运行“uploadObject(true)”方法时,我得到以下错误

================== Uploading object. ==================

Forbidden

我修改后的“uploadObject”方法如下:

private static void uploadObject(boolean useCustomMetadata) throws IOException {
  View.header1("Uploading object.");
  File file = new File("My_test_upload_file.txt");
  if (!file.exists() || !file.isFile()) {
      System.out.println("File does not exist");
      System.exit(1);
  }
  InputStream inputStream = new FileInputStream(file);
  long byteCount = file.length();
  InputStreamContent mediaContent = new InputStreamContent("application/octet-stream", inputStream);
  mediaContent.setLength(byteCount);
  StorageObject objectMetadata = null;
  if (useCustomMetadata) {
      List<ObjectAccessControl> acl = Lists.newArrayList();  // empty acl (seems default acl).
      objectMetadata = new StorageObject()
             .setName("myobject")
             .setMetadata(ImmutableMap.of("key1", "value1", "key2", "value2"))
             .setAcl(acl)
             .setContentDisposition("attachment");        
  }
  Storage.Objects.Insert insertObject = storage.objects().insert("mybucket", objectMetadata, mediaContent);
  if (!useCustomMetadata) {
    insertObject.setName("myobject");
  }
  if (mediaContent.getLength() > 0 && mediaContent.getLength() <= 2 * 1000 * 1000 /* 2MB */) {
    insertObject.getMediaHttpUploader().setDirectUploadEnabled(true);
  }
  insertObject.execute();
}

在程序的第一次运行中,创建了一个存储桶,上传我创建的测试文件时出现“禁止”错误。在随后的运行中,“禁止”错误仍然存​​在。

我认为由于存储桶是由程序创建的,因此程序应该有足够的访问权限将文件上传到该存储桶。

是否有任何我错过的设置/操作?感谢您的任何建议。

【问题讨论】:

    标签: google-cloud-storage


    【解决方案1】:

    哦,多么粗心的错误。我忘记将“mybucket”名称更改为我创建的存储桶的名称。

    程序现在运行正常。

    【讨论】:

    • 我正在尝试做同样的事情,但它不适用于大文件,但在 Google 提供的给定示例中阅读,它似乎适用于大文件(评论为 100MB) .你知道怎么做吗?非常感谢
    猜你喜欢
    • 2016-04-22
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2019-04-02
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多