Загрузка изображения или файла PDF из Gcloud Storage повреждена

Я использую файл, загруженный из хранилища Gcloud, как вложение в Mandrill API для отправки в виде вложения в электронное письмо. Проблема в том, что он работает только для текстового файла, но для изображения или Pdf вложение повреждено. Следующий код предназначен для загрузки файла и его преобразования в строку, закодированную в Base64.

Storage.Objects.Get getObject = getService().objects().get(bucket, object);

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    // If you're not in AppEngine, download the whole thing in one request, if possible.
    getObject.getMediaHttpDownloader().setDirectDownloadEnabled(true);
    getObject.executeMediaAndDownloadTo(out);
    //log.info("Output: {}", out.toString("UTF-8"));
    return Base64.encodeBase64URLSafeString(out.toString("UTF-8")
        .getBytes(StandardCharsets.UTF_8));

Я устанавливаю эту строку в содержимом MessageContent Mandrill API.

1 ответ

Решение

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

Storage.Objects.Get getObject = storage.objects().get("bucket", "object");

OutputStream out = new FileOutputStream("/tmp/object");
// If you're not in AppEngine, download the whole thing in one request, if possible.
getObject.getMediaHttpDownloader().setDirectDownloadEnabled(true);
getObject.executeMediaAndDownloadTo(out);
Другие вопросы по тегам