загрузка файла на сервер API Rails JSON с запросом Paperclip и Multipart

Я хочу загрузить файл из клиента Android на сервер Rails JSON API.

Я отправляю запрос Multipart/form из клиента Android, который выглядит так:

Content-Type: multipart/form-data; boundary=d99ArGa2SaAsrXaGL_AdkNlmGn2wuflo5
Host: 10.0.2.2:3000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)

--d99ArGa2SaAsrXaGL_AdkNlmGn2wuflo5
Content-Disposition: form-data; name="POSTDATA"
Content-Type: application/json; charset=UTF-8
Content-Transfer-Encoding: 8bit

{"tags":["test"],"location_id":1,"post":{"content":"test"}}
--d99ArGa2SaAsrXaGL_AdkNlmGn2wuflo5
Content-Disposition: form-data; name="IMAGEDATA"; filename="testimage.jpg"
Content-Type: image/jpeg
Content-Transfer-Encoding: binary

<BINARY DATA?
--d99ArGa2SaAsrXaGL_AdkNlmGn2wuflo5--

в контроллере rails я создаю новый пост с этим кодом:

@parsed_json = JSON(params[:POSTDATA])
@post = @current_user.posts.new(@parsed_json["post"]) 

как заставить Paperclip сохранить вложение из многочастная форма?

Я могу сделать это с помощью чего-то вроде этого :

if params.has_key?(:IMAGEDATA)
    photo = params[:IMAGEDATA]
    photo.rewind

    @filename = "/tmp/tempfile"
    File.open(@filename, "wb") do |file|
      file.write(photo.read)
    end

    @post.photo = File.open(@filename)
  end

, но это не похоже на лучшее решение, кроме того, имя файла, которое передается в составном запросе, не используется.

13
задан Gal Ben-Haim 15 April 2012 в 07:47
поделиться