Загрузка изображения или файла 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);