【问题标题】:Set type of object while uploading to google cloud storage using java library使用 java 库上传到谷歌云存储时设置对象类型
【发布时间】:2021-06-09 04:01:55
【问题描述】:

使用 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 如何设置为image/jpgimage/png。如何在上传前设置元数据

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 如何动态设置。文件可能是 PNG 或 JPG 或 JPEG
    • 如果不是?这取决于您如何定义什么是 PNG,什么是 JPEG?
    • 谢谢,你能帮我解决这个问题吗stackoverflow.com/questions/66577896/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多