I have an application built in ruby on rails. I need to post curl request to that application to upload images from local machine. In my ruby on rails application I am using paperclip for image uploader.
Now this curl request is working perfectly fine as there is no upload image for this curl request:
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X PUT -d '{"user":{"first_name":"John","last_name":"Smith"},"token":"api"}' http://localhost:3000/users/8
Now I want to upload an image from my localmachine.
Adding "display_photo":@test.jpg is not working: This is what I was trying: (But its not working.)
curl -v -H -F "Accept: application/json" -H "Content-type: application/json" -X PUT -d '{"user":{"first_name":"firstname","last_name":"lastname","display_photo":@test.jpg},"token":"api"}' http://localhost:3000/users/8
So the question is how to upload images/data files/ videos from curl request
EDIT
This is my controller:
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
format.json { render :file => "users/json/show.json.erb", :content_type => 'application/json' }
else
format.html { render :action => "edit" }
format.json {
@errors_object = @user
render :file => "shared/json/errors.json.erb", :content_type => 'application/json' }
end
end
end
In my model:
class User < ActiveRecord::Base
has_attached_file :display_photo, :styles => { :medium => "200x200#", :thumb => "100x100#", :very_small=>"24x24#" }
end
you would normally upload a file like this:
curl -i -F [email protected] http://localhost:5000/
doing so mimics the behavior that you would have through a webbrowsers file upload.
if you look at the rails response for this, it's sent via application/octet-stream
that can be handled properly as an uploaded file. as far as i know it's not possible to do this with a json request:
Started POST "/" for 127.0.0.1 at 2012-07-10 09:40:59 +0200
Processing by HomeController#index as */*
Parameters: {"filedata"=>#<ActionDispatch::Http::UploadedFile:0x007f82d59a3580 @original_filename="upload.txt", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"filedata\"; filename=\"upload.txt\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:/var/folders/f_/wjnrg7cd3d9f1tpy3k5fhrwm0000gn/T/RackMultipart20120710-30471-1t9abns>>}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With