2013-09-19 2 views
7

как бы вы создали базовый URL-адрес для изображения с использованием getServingUrl() без использования Blobs? Все примеры, которые я видел до сих пор, связаны с блобами, но мне нужно использовать значение Google Cloud Storage.Метод getServingUrl() с использованием значения облачного хранилища Google

Спасибо.

ответ

8

Новая ошибка для getServingUrl() с аргументом метода ServingUrlOptions. И его построитель имеет метод withGoogleStorageFileName(), который можно использовать для создания URL-адреса на основе имени файла Cloud Storage.

GcsFilename gcsFilename = new GcsFilename("bucketName", "objectName"); 
ImagesService is = ImagesServiceFactory.getImagesService(); 
String filename = String.format("/gs/%s/%s", gcsFilename.getBucketName(), gcsFilename.getObjectName()); 
String servingUrl = is.getServingUrl(ServingUrlOptions.Builder.withGoogleStorageFileName(filename)); 

Javadocs:

  1. https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/images/ImagesService.html#getServingUrl(com.google.appengine.api.images.ServingUrlOptions)
  2. https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/images/ServingUrlOptions.Builder.html
+0

В/гс/в URL вызывает ни один URL, удаление это вызывает исключение «имена файлов для хранения Google должны быть с префиксом/gs/', что мне делать? –

2

Это старый вопрос, но это, как вы служите изображения от Cloud Storage:

String key = "/gs/<bucket-name>/<path>"; // Such as /gs/example-bucket/categories/animals.png" 
ImagesService imagesService = ImagesServiceFactory.getImagesService(); 
ServingUrlOptions options = ServingUrlOptions.Builder 
       .withGoogleStorageFileName(key) 
       .imageSize(900) // Optional. 
       .crop(true); // Optional. 
String servingUrl = imagesService.getServingUrl(options); 

Затем вы делаете все, что хотите, с помощью URL-адреса. Например, вы перенаправляете запрос туда.

Этот URL может иметь больше опций, чем imageSize и crop, но предоставленный Java API, похоже, не поддерживает его. Однако вы можете добавить дополнительные параметры в строку URL, но это не вопрос GCS, а API изображений.

+0

Я пробовал вышеуказанные строки кода, и получаю следующие исключения: Исключение из потока «main» com.google.apphosting.api.ApiProxy $ CallNotFoundException: пакет API blobstore или вызов CreateEncodedGoogleStorageKey() был не найдено. У вас есть идеи? – das

+0

@das Это похоже на несовместимую или отсутствующую зависимость времени выполнения. 'mvn dependency: tree' является вашим другом: D Вы должны заглянуть в полный стек и определить, какой артефакт он исходит. Кроме того, попробуйте googling для этой функции (в большинстве случаев запрос '<имя функции> github' работает как шарм). Выяснение, в каком артефакте оно должно быть, поможет вам определить, действительно ли оно отсутствует или просто неверно. – Pijusn

Смежные вопросы