首页 > 解决方案 > 使用 java 库上传到谷歌云存储时设置对象类型

问题描述

使用 Java 库将对象上传到 GCP https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-code-sample,代码如下

public static void uploadObject(
      String projectId, String bucketName, String objectName, String filePath) throws IOException {
    
    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);
  }

上面的代码效果很好,但是图片的内容类型是application/octet-stream How do I set to image/jpgor image/png。如何在上传前设置元数据

标签: javagoogle-cloud-platformgoogle-cloud-storage

解决方案


BobInfo 有一个 Builder,它有很多选项,包括 setContentType。

https://googleapis.dev/java/google-cloud-storage/latest/com/google/cloud/storage/BlobInfo.Builder.html

如果您总是看到 builder/newBuilder,则需要进一步调查文档以查看是否还有其他(setter)。

BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("image/jpeg").build();

=== 已编辑 ===

public String determineContentType(File inputFile){

   String contentType =  // Your logic of determining type of file format

  return contentType;

}

    BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType(determineContentType(yourFile)).build();

推荐阅读