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:
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:I had the same problem and I solved it with the following, which bypass the JSON request: