Google Cloud Storage - 如何访问存储桶内的文件夹和文件,如静态资源 - Spring Boot

Google Cloud Storage - How to access folders and files like static resources inside bucket - Spring Boot

我想为所有静态资源使用 Google 云存储 - 图片等

示例是注入 1 个文件,但我想访问多个文件 - 给定一个名称

@Value("gs://${gcs-resource-test-bucket}/hello.txt")
private Resource gcsFile;

我也对迭代不感兴趣 - 因为我在存储桶中有文件夹,并且不想每次都迭代所有 100 个左右的文件

Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
Page<Blob> blobs = storage.list(bucketName);

for (Blob blob : blobs.iterateAll()) {
  System.out.println(blob.getName());
}

有没有办法访问像 gs://somestringfilename 这样的文件?

不知道如何使用这个属性来访问文件

You can also serve static resources by reading them from a bucket.
 spring.web.resources.static-locations=gs://p*

假设我有一个 rest controller 来提供文件名,我如何从云存储中获取文件?

根据给定的陈述,您正在尝试使用 Java 作为您的语言从 Google 云存储中读取或访问文件。

对于你的情况,这应该有效:

BlobId blobId = BlobId.of(bucketName, blobName);
Blob blob = storage.get(blobId);
String fileContent = new String(blob.getContent());
System.out.println(fileContent);

有关 Class Blob 的更多文档,您可以参考 here

您也可以查看此 Cloud Storage Client Libraries 了解更多详情。

我用 bean 解决了这个问题

StorageOptions.newBuilder().setProjectId(projectId).build().getService();

一个函数

私人页面文件夹(字符串目录前缀){

Page<Blob> blobs =
        storage().list(
            bucketName,
            Storage.BlobListOption.prefix(directoryPrefix));

return blobs;       

}

用法:directotyPrefix不仅仅是我的文件夹,还要贴上文件名

myfolder/ + filenamewithext