amazon s3 - Carrierwave, Minimagick image upload to S3 not working -
i want save several version of images. i'm following , customizing uploading-images-with-carrierwave-to-s3-on-rails, image parameters not allowed form, don't know why. model
class attachment < activerecord::base mount_uploader :img, s3uploaderuploader end my form looks this.
<%= form_tag(img_upload_create_path, { multipart: true, method: "post"}) %> <div class="fileupload btn btn-default"> <span>file open</span> <%= file_field_tag 'user_pic[]', multiple: true, accept:'image/png,image/gif,image/jpeg', class: "pictures btn btn-success" %> </div> <%= submit_tag "upload", :class => "btn btn-success btn-lg" %> </div> <% end %> and controller
class imguploadcontroller < applicationcontroller def create params[:user_pic].each |pic| attachment.create( img: pic ) end redirect_to :back end end my uploader,
class s3uploaderuploader < carrierwave::uploader::base include carrierwave::minimagick storage :fog def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end def cache_dir '/tmp/cache/s3file' end def extension_white_list %w(jpg jpeg png gif) end #version1 version :detailvertical process :quality => 50 end #version2 version :detailhorizontal process :quality => 50 end #version3 version :mainvertical, :from_version => :detailvertical process :resize_to_fit => [240, 320] process :quality => 100 end #version4 version :mainhorizontal, :from_version => :detailhorizontal process :resize_to_fit => [240, 180] process :quality => 100 end end and config/initializers/carrierwave.rb
module carrierwave module minimagick def quality(percentage) manipulate! |img| img.quality(percentage.to_s) img = yield(img) if block_given? img end end end end i added log here, when submit images.
processing imguploadcontroller#create html parameters: {"utf8"=>"✓", "authenticity_token"=>"c6z+pucbk59+ig/sumcrrkxwfbtca rknzcmu0ag0rmp3jqzvxlwxbq2sf7f/7vazg8iwcxy5cwq+nrepvj10jw==", "user_pic"=>[#<actiondispatch::http::uploadedfile:0x007facb8033df8 @tempfile=#<tempfile:/home/ubuntu/workspace/rackmultipart20160106-5826-109snyd.jpg>, @original_filename="yhouse7.jpg", @content_type="image/jpeg", @headers="content-disposition: form-data; name=\"user_pic[]\"; filename=\"yhouse7.jpg\"\r\ncontent-type: image/jpeg\r\n">, #<actiondispatch::http::uploadedfile:0x007facb8033dd0 @tempfile=# <tempfile:/home/ubuntu/workspace/rackmultipart20160106-5826-d9ni1l.jpg>, @original_filename="yhouse7-2.jpg", @content_type="image/jpeg", @headers="content-disposition: form-data; name=\"user_pic[]\"; filename=\"yhouse7-2.jpg\"\r\ncontent-type: image/jpeg\r\n">], "commit"=>"upload"}
ok, after long trip find solution, did it. didn't install imagemagick. downloaded
gem 'carrierwave', github: 'carrierwaveuploader/carrierwave' gem "fog-aws" gem 'mini_magick' those 3 gems. please download imagemagick using
sudo apt-get -y install imagemagick before start work minimagick.
Comments
Post a Comment