# #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. Я нашел ответ и тоже опубликую свой ответ. попробую этот, так как он отличается от моего решения