के साथ रेल JSON API सर्वर पर फ़ाइल अपलोड करने के लिए मैं एक एंड्रॉइड क्लाइंट से एक रेल JSON API सर्वर पर एक फ़ाइल अपलोड करना चाहता हूं।पेपरक्लिप और मल्टीपार्ट अनुरोध
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--
रेल नियंत्रक में
मैं इस कोड के साथ नया पद बना रहा हूं:
@parsed_json = JSON(params[:POSTDATA])
@post = @current_user.posts.new(@parsed_json["post"])
मैं Android ग्राहक जो कि तरह लग रहा है से एक मल्टीपार्ट/प्रपत्र अनुरोध भेज रहा
मैं पेपरक्लिप को मल्टीपार्ट फॉर्म से अनुलग्नक कैसे सहेज सकता हूं?
मैं कुछ इस तरह से यह कर सकते हैं:
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
लेकिन यह सबसे अच्छा समाधान है, यह भी, फ़ाइल का नाम है कि वहाँ बहुखण्डीय अनुरोध भेजी जा रही है नहीं किया जाता है की तरह नहीं दिखता।
class Post < ActiveRecord::Base
has_attached_file :photo, :styles => { ... }
...
end
तो आप इस के रूप में सरल कुछ करने के लिए सक्षम होना चाहिए::
कोई विचार यह कैसे करना है? –