मेरे पास जावा में बाइट सरणी के रूप में एक छवि है। मैं उस छवि को मेरी रूबी पर रेल ऐप पर अपलोड करने की कोशिश कर रहा हूं, जो पेपरक्लिप मणि का उपयोग करता है। मेरे रेल मॉडल इस तरह दिखता है:रेल-ऐप पर रूबी को HTTP-POST एक छवि
class App < ActiveRecord::Base
has_attached_file :image
end
जब मैं जावा कोड निष्पादित, मैं HHTTP/1.1 302 Found
प्रतिक्रिया मेरी रेल एप्लिकेशन प्राप्त करें। अद्यतन जावा HTTP-पोस्ट विधि। यहाँ नया जावा कोड है कि मैं HTTP-पोस्ट के लिए उपयोग कर रहा हूँ है:
public void postFile(byte[] image) throws ClientProtocolException, IOException{
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost("http://localhost:3000/apps");
ContentBody cb = new ByteArrayBody(image, "image/jpg", "icon.jpg");
//ContentBody cb = new InputStreamBody(new ByteArrayInputStream(image), "image/jpg", "icon.jpg");
MultipartEntity mpentity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
mpentity.addPart("image", cb);
httppost.setEntity(mpentity);
HttpResponse response = httpclient.execute(httppost);
System.out.println(response.getStatusLine());
}
यहाँ रेल कंसोल पर नए डिबग है:
Started POST "/apps" for 127.0.0.1 at Mon Jan 31 00:26:07 +0000 2011
Processing by AppsController#create as HTML
Parameters: {"image"=>#<ActionDispatch::Http::UploadedFile:0x1041491c8 @content_type=nil, @original_filename="icon.jpg", @headers="Content-Disposition: form-data; name=\"image\"; filename=\"icon.jpg\"\r\n", @tempfile=#<File:/var/folders/NU/NUcfnxwVHmmnVUo9JUdNok+++TI/-Tmp-/RackMultipart20110131-3735-1ylugl7-0>>}
SQL (0.1ms) BEGIN
SQL (1.0ms) describe `apps`
AREL (0.4ms) INSERT INTO `apps` (`appName`, `image_file_size`, `created_at`, `image_updated_at`, `image_file_name`, `image_content_type`, `updated_at`) VALUES (NULL, NULL, '2011-01-31 00:26:07', NULL, NULL, NULL, '2011-01-31 00:26:07')
[paperclip] Saving attachments.
SQL (1.3ms) COMMIT
Redirected to http://localhost:3000/apps/36
Completed 302 Found in 18ms
अपलोड हो रहा है छवियों सीधे से ब्राउज़र एक आकर्षण की तरह काम करता है।
def create
@app = App.new(params[:app])
respond_to do |format|
if @app.save
format.html { redirect_to(@app, :notice => 'App was successfully created.') }
format.xml { render :xml => @app, :status => :created, :location => @app }
format.json { render :json => @app, :status => :created, :location => @app }
else
format.html { render :action => "new" }
format.xml { render :xml => @app.errors, :status => :unprocessable_entity }
format.json { render :json => @app.errors, :status => :unprocessable_entity }
end
end
end
मैं गलत कहाँ जा रहा हूँ: यहाँ नियंत्रक/apps_controller.rb के कार्यान्वयन है?
आप किस HTTP लाइब्रेरी का उपयोग कर रहे हैं? –
अपाचे कॉमन्स HTTP क्लाइंट 4.1 – Raunak
लॉग से ऐसा लगता है कि डीबी में एक प्रविष्टि डाली जा रही है और संलग्नक सहेजा जा रहा है, क्या आप यह पुष्टि कर सकते हैं कि यह मामला है या नहीं? और AppsController में निर्माण कार्य देखना भी दिलचस्प होगा, क्या आप इसे अपने प्रश्न में भी शामिल कर सकते हैं? – DanneManne