Не удается получить URL-адрес для изображений из облачного хранилища Google -> «NOT_IMAGE: не удалось прочитать изображение»

1

Сначала я сохраняю изображение в Google Cloud Storage и устанавливаю тип mime на что-то вроде "image/png" и назову его случайным образом с файлом, заканчивающимся, например, ".png". Файлы, похоже, хранятся правильно. Я вижу их в средстве просмотра хранилища данных:

Изображение 174551

Но если я попытаюсь загрузить его снова с помощью com.google.appengine.api.images.ImagesService и вызвать ImagesService.getServigUrl(), он выдает ошибку:

java.lang.IllegalArgumentException: NOT_IMAGE: Failed to read image

Поэтому кажется, что это не образ. Но почему? Он имеет набор параметров mime, у него есть файл, заканчивающийся. Код выглядит так:

ImagesService imagesService = ImagesServiceFactory.getImagesService();
Image newImage = imagesService.applyTransform(crop, oldImage);

final GcsService gcsService =
        GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());

AppIdentityService appservice =  com.google.appengine.api.appidentity.AppIdentityServiceFactory.getAppIdentityService();

GcsFilename fileName = new GcsFilename(appservice.getDefaultGcsBucketName(), Long.toString(random.nextLong(), 36)+"."+newImage.getFormat().toString().toLowerCase());

GcsFileOptions gcsOptions = new GcsFileOptions.Builder()
  .mimeType("image/"+newImage.getFormat().toString().toLowerCase())
  .acl("public-read").build();

GcsOutputChannel outputChannel =
        gcsService.createOrReplace(fileName, gcsOptions);

ObjectOutputStream oout =
    new ObjectOutputStream(Channels.newOutputStream(outputChannel));
oout.writeObject(newImage.getImageData());
oout.close();


ServingUrlOptions suo = ServingUrlOptions.Builder.withGoogleStorageFileName("/gs/"+fileName.getBucketName()+"/"+fileName.getObjectName()).secureUrl(true);
String s = imagesService.getServingUrl(suo);
System.out.println(s);
  • 0
    Вы запускаете свой код с сервера Dev или Live? stackoverflow.com/questions/12868646/...
  • 0
    Да, это сервер разработки. Но для Blobstore, с другой стороны, он работает на сервере dev для меня. Связанный вопрос не имеет решения ..
Показать ещё 2 комментария
Теги:
google-cloud-storage
google-app-engine

1 ответ

0

Возможно, это не тип изображения mime, который вы загрузили, проверьте тип mime загруженного файла.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню