Облачное хранилище Google — Как получить доступ к папкам и файлам, таким как статические ресурсы, внутри загрузки с ковшовой пружиной

# #spring-boot #google-cloud-platform #google-cloud-storage

Вопрос:

Я хочу использовать облачное хранилище 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 для указания имени файла, как я могу получить файл из облачного хранилища?

Комментарии:

1. Являются ли ваши ресурсы общедоступными?

2. не общедоступно. приложение читает, поэтому предположим, что это учетная запись службы. Проблема не в разрешениях, а в том, как получить доступ к файлам по имени

3. Попытка — Страница<Большой двоичный объект> большие двоичные объекты = хранилище().список( Имя корзины, Хранилище. BlobListOption.prefix(directoryPrefix)); кажется, все в порядке, но теперь нужно прочитать содержимое

Ответ №1:

Я решил эту проблему с помощью bean

StorageOptions.newBuilder().setProjectId(идентификатор проекта).build().GetService();

функция

папка личной страницы(строка directoryPrefix) {

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

return blobs;       
 

}

Использование: directotyPrefix-это не только моя папка, но и имя файла

моя папка/ имя файла в текстовом редакторе

Ответ №2:

Основываясь на данном утверждении, вы пытаетесь прочитать или получить доступ к файлам из облачного хранилища Google, используя Java в качестве языка.

В вашем случае это должно сработать:

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

Для получения дополнительной документации по Blob-объекту класса Вы можете обратиться сюда.

Вы также можете ознакомиться с клиентскими библиотеками этого облачного хранилища для получения более подробной информации.

Комментарии:

1. Я нашел ответ и тоже опубликую свой ответ. попробую этот, так как он отличается от моего решения