2013-03-10 2 views
1

Я попытался найти способ отправки изображения с ответа JSON на сервер (сохранить на сервер). Как я понял, я могу использовать @RequestBody, но я не знаю, как это сделать. Thanx за любую помощь от вас.Spring JSON POST image

+0

Если вы не разместите свой код, а также сообщите нам, что вы пробовали, я отправлю описание «Как сделать куриный и грибной суп» в качестве ответа. –

+0

Я просто хочу простой пример того, как я могу получить изображение из JSON. – Maximus

ответ

3

Вы спрашиваете, как POST-изображение в теле запроса JSON на сервер? Я сделал это недавно, см. Подробности here. Я дал этот ответ в a similar question, но воспроизведет ответ здесь.

В браузере мы можем использовать файл API для загрузки файла, затем кодировать его содержимое с использованием кодировки Base64 и, наконец, назначить кодированное содержимое объекту javascript перед его отправкой.

На сервере у нас есть контроллер Spring, который будет обрабатывать запрос. Как часть json unmarshalling, которая преобразует тело запроса в объект java, значение, закодированное base64 для байтов изображения, будет преобразовано в стандартный байт Java [] и сохранено в виде LOB в базе данных или потоковым в виде байта массив непосредственно на диск (в зависимости от того, как вы хотите сохранить файл на сервере)

Чтобы получить изображение, другой метод Spring Controller может предоставить изображение путем потоковой передачи байтов обратно.

Сообщение в блоге, которое я связал выше, предполагает, что вы хотите использовать изображение как часть другого объекта, но принцип должен быть таким же, если вы хотите работать только с изображением напрямую. Поскольку вы хотите, чтобы изображение было частью тела запроса JSON, похоже, что этот метод - это то, что вы хотите. Дайте мне знать, если что-то нуждается в разъяснении.

+0

Thanx Jay. Я только что прочитал о Base64. Но как это будет выглядеть в URL-адресе, если это будет строка Base64 :) В образах базы данных будут сохраняться как URL-адреса. И я собираюсь сделать изображение как часть @RequestBody. – Maximus

+0

Базовая 64-строка является частью тела запроса, а не частью URL-адреса, поэтому вы ее не увидите. Кроме того, нет смысла сохранять URL-адрес в базе данных, когда вы пытаетесь сохранить фактическое изображение. Вы должны очистить схему, которую вы имеете в виду, для хранения этих изображений. – Jay

+0

Я собираюсь хранить эти изображения прямо на диск. Я не знаю, правильно ли это, что тело запроса выглядит как '{ "образ": "Данные: изображение/JPEG; base64,/9J/4QITRXhpZgAATU0AKgAAAAgACgEDAAMAAAABAAYAAAEPAAIAAAAIAAAAhgEQAAIAAAAJAAAAjgESAAMAAAABAAEAAAEaAAUAAAABAAAAlwEbAAUAAAABAAAAnwEoAAMAAAABAAIAAAEyAAIAAAAUAAAApwITAAMAAAABAAEAAIdpAAQAAAABAAAAuwAAAABTQU1TVU5H/hJ8SBaiabTruG3J56r4b09nZxGzAFUCDkdOoauXuNH8H + MtR8rVrVJpYsqjsgYgc5xlWx09a55YtbnqwpNn/2Q =="}', это даже не размещены Вот .... ? – Maximus