как загрузить изображение в Amazon S3 - PullRequest
1 голос
/ 27 июля 2011

Я разрабатываю приложение для Android, которое загружает изображение (jpg) в AWS S3. Изображение загружается, но я не могу открыть его с помощью веб-браузера: изображение недействительно или открыто в виде строки.

//skipping error handling for simplicity

InputStream is = Utils.streamFromUri(this, uri);
byte[] buffer = new byte[FileUtils.getInputSize(is)];
...
//is is restored at this point
is.read(buffer);
String data = new String(buffer);
S3.createObjectForBucket(bucketName, objectName, data)

Не могли бы вы поделиться рабочим кодом для загрузки или дать несколько советов, как решить эту проблему?

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 июля 2011

Первый файл заполнен только 0.Второй файл не в формате JPEG, но, кажется, является результатом какого-то преобразования (в нем есть некоторые данные фотографии).Не должно быть проблем с загрузкой при нормальных обстоятельствах.Если вы предоставите подробности о том, как вы их загрузили (код или инструмент), мы можем перейти оттуда.


Обновление

Ваш код для получения данных для загрузки, вероятно, не будет работать.Я не знаю подробностей о ваших утилитах, но когда вы делаете

FileUtils.getInputSize(is)

, он, вероятно, читает весь поток, так что вы заканчиваете его в конце и ничего не читаете для загрузки.Я настоятельно рекомендую вам использовать Apache Commons IO для чтения данных.И вы можете получить его размер после чтения в память.


Обновление 2

Вы используете преобразование байтов в строки.Из String(byte[]) документации

Constructs a new String by decoding the specified array of bytes using 

кодировка платформы по умолчанию.

Поскольку вы используете двоичные данные, они преобразуются.Это на самом деле также видно из вашего второго файла, который начинается с ef bf bd, который является символом замены Unicode.Поэтому воздержитесь от использования строки для хранения двоичных данных.

0 голосов
/ 27 июля 2011

Две вещи.

В амазоне S3.Вам нужно установить права на изображение для всех: читать.Я использую плагин Firefox S3FOX, и затем вы щелкаете правой кнопкой мыши, нажимаете Edit ACL и даете всем доступ для чтения.

Возможно, вам придется установить обычный заголовок.Content-Type: image / jpeg

Это немного зависит от того, как вы загружаете файл, обычно это происходит с помощью automagic.

Связанные файлы разрушены.Попробуйте другой инструмент для загрузки изображений на S3, если вы знаете, что изображения хороши на вашем компьютере.

http://www.s3fox.net/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...