【问题标题】:Upload file to google cloud storage (JAVA)上传文件到谷歌云存储(JAVA)
【发布时间】:2020-07-12 13:18:04
【问题描述】:

我想按照官方documentation提供的示例将文件上传到谷歌云存储

  public class UploadObject {
      public static void uploadObject(
          String projectId, String bucketName, String objectName, String filePath) throws IOException {
        // The ID of your GCP project
        // String projectId = "your-project-id";
    
        // The ID of your GCS bucket
        // String bucketName = "your-unique-bucket-name";
    
        // The ID of your GCS object
        // String objectName = "your-object-name";
    
        // The path to your file to upload
        // String filePath = "path/to/your/file"
    
        Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
        BlobId blobId = BlobId.of(bucketName, objectName);
        BlobInfo blobInfo = BlobInfo.newBuilder(blobId).build();
        storage.create(blobInfo, Files.readAllBytes(Paths.get(filePath)));
    
        System.out.println(
            "File " + filePath + " uploaded to bucket " + bucketName + " as " + objectName);
      }
    }

但是,我得到了错误:

线程“main”com.google.cloud.storage.StorageException 中的异常:获取服务帐户的访问令牌时出错:400 Bad Request {"error":"invalid_grant","error_description":"Invalid JWT:令牌必须是短期令牌(60 分钟)并且在合理的时间范围内。请检查 JWT 声明中的 iat 和 exp 值。"} at com.google.cloud.storage.spi.v1.HttpStorageRpc.translate(HttpStorageRpc. java:227)

这可能是什么原因?

【问题讨论】:

  • 欢迎来到 StackOverflow。查看how to ask a good question 上的指南以了解未来的问题。看起来(来自 cmets)您在询问之前已经尝试了一些事情。包括您尝试过的内容(使用minimal, reproducable example 代码)可以帮助人们更快更好地帮助您。

标签: java google-cloud-storage cloud cloud-storage


【解决方案1】:

此错误有两个常见原因:您执行任务的时钟与 NTP(网络时间协议)不同步,或者,您可以检查您如何处理刷新令牌和旧令牌。当刷新令牌的数量超过限制时,旧令牌将失效。如果应用程序尝试使用无效的刷新令牌,则会返回此错误。看看这个document

另一方面,还有其他选项可以帮助您将文件上传到 Cloud Storage,您可以通过以下命令找到非常清晰的 example 关于如何使用 Cloud SDK 进行上传:

gsutil cp [OBJECT_LOCATION] gs://[DESTINATION_BUCKET_NAME]/

Here你可以找到更多的例子。

【讨论】:

  • 谢谢!我已经尝试过这段代码,但是当我执行它时会出现一条错误消息:线程“main”com.google.cloud.storage.StorageException中的异常:获取服务帐户的访问令牌时出错:400 Bad Request {“error”:” invalid_grant","error_description":"无效的 JWT:令牌必须是短期令牌(60 分钟)并且在合理的时间范围内。检查 JWT 声明中的 iat 和 exp 值。"} 在 com.google.cloud.storage .spi.v1.HttpStorageRpc.translate(HttpStorageRpc.java:227)
  • 此错误有两个常见原因:您执行任务的时钟与 NTP(网络时间协议)不同步,或者,您可以检查您如何处理刷新令牌和旧令牌令牌。当刷新令牌的数量超过限制时,旧令牌将失效。如果应用程序尝试使用无效的刷新令牌,则会返回此错误。看看这个文档developers.google.com/identity/protocols/oauth2
  • 谢谢,它有效!问题是本地机器上的时钟不同步,所以我只是打开了“自动设置时间”
  • 我很高兴它成功了,只是为了提醒你看看这里stackoverflow.com/help/someone-answers
猜你喜欢
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 2018-10-10
  • 2019-06-09
相关资源
最近更新 更多