将文件上传到 google 云存储 (JAVA)

Upload file to google cloud storage (JAVA)

我想按照官方 documentation

提供的示例将文件上传到 Google Cloud Storage
  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 错误请求{“错误”:“invalid_grant”,“[=29” =]":"无效的 JWT:令牌必须是短期令牌(60 分钟)并且在合理的时间范围内。检查 JWT 声明中的 iat 和 exp 值。"} at com.google.cloud.storage.spi.v1.HttpStorageRpc.translate(HttpStorageRpc.java:227)

这可能是什么原因?

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

另一方面,还有其他选项可以帮助您将文件上传到云存储,您可以通过以下命令找到非常清楚的example about how to do it using Cloud SDK

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

Here您可以找到更多示例。