Сохранение изображения, полученного как часть данных многочастной формы, с использованием Scala - PullRequest
0 голосов
/ 19 марта 2012

Мой сервер получает данные из нескольких частей из мобильного приложения.Результат распечатки запроса с использованием request.content.toString (UTF_8) показан ниже.Изображение отправляется мобильным телефоном в виде строки в кодировке base64.Как сохранить данные изображения в файл?

--*****org.apache.cordova.formBoundary
Content-Disposition: form-data; name="value1"

Furniture
--*****org.apache.cordova.formBoundary
Content-Disposition: form-data; name="value2"

Chair
--*****org.apache.cordova.formBoundary
Content-Disposition: form-data; name="file"; filename="image.jpg"
Content-Type: image/jpeg

����JFIF��XExifMM*�i...rest of image goes here...
--*****org.apache.cordova.formBoundary--

1 Ответ

0 голосов
/ 20 марта 2012

Мне еще предстоит разобрать данные составной формы, но сохранение изображения оказалось простым (если вы знаете, как). Чтобы проверить, я загружаю только изображение во время тестирования, используя:

curl -T "image.jpg" http://127.0.0.1:8080/imageupload

Я использую Finagle, который зависит от библиотек netty, поэтому request.content () возвращает объект типа org.jboss.netty.buffer.ChannelBuffer, для которого вы извлекаете данные изображения следующим образом:

Чтобы сохранить файл из содержимого запроса в файл:

  val raf = new java.io.RandomAccessFile("image.jpg", "rw");
  val buf = request.getContent();
  val fChannel = raf.getChannel();

  fChannel.write( buf.toByteBuffer() );
  raf.close();
  fChannel.close();

На передача содержимого запроса на веб-службу, ожидающую base64binary:

  import org.jboss.netty.util.CharsetUtil._
  import org.jboss.netty.handler.codec.base64.Base64

  val base64binaryImage = (Base64.encode(request.getContent())).toString(UTF_8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...