【问题标题】:Carrierwave, Minimagick image upload to S3 not workingCarrierwave,Minimagick 图像上传到 S3 不起作用
【发布时间】:2016-01-06 05:23:20
【问题描述】:

我想保存多个版本的图像。所以我在关注和自定义uploading-images-with-carrierwave-to-s3-on-rails,但是我的图像参数是不允许的,但我不知道为什么。 我的模型

class Attachment < ActiveRecord::Base
    mount_uploader :img, S3uploaderUploader
end

我的表单看起来像这样。

<%= form_tag(img_upload_create_path, { multipart: true, method: "POST"}) do %>
  <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 %>

还有我的控制器

class ImgUploadController < ApplicationController
  def create
    params[:user_pic].each do |pic|
      Attachment.create(
            img: pic
      )
    end
    redirect_to :back
  end 
end

我的上传者,

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 do
    process :quality => 50
  end
  #version2
  version :detailHorizontal do
    process :quality => 50
  end
  #version3
  version :mainVertical, :from_version => :detailVertical do
    process :resize_to_fit => [240, 320]
    process :quality => 100
  end
  #version4
  version :mainHorizontal, :from_version => :detailHorizontal do
    process :resize_to_fit => [240, 180]
    process :quality => 100
  end
end

还有我的 config/initializers/carrierwave.rb

module CarrierWave
  module MiniMagick
    def quality(percentage)
      manipulate! do |img|
        img.quality(percentage.to_s)
        img = yield(img) if block_given?
        img
      end
    end
  end
end

我在这里添加了日志,当我提交图像时。

Processing by ImgUploadController#create as 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"}

【问题讨论】:

    标签: amazon-s3 carrierwave image-uploading minimagick


    【解决方案1】:

    好的,经过长途跋涉寻找解决方案,我做到了。我没有安装imagemagick。 我刚刚下载了

    gem 'carrierwave', github: 'carrierwaveuploader/carrierwave'
    gem "fog-aws"
    gem 'mini_magick'
    

    这三颗宝石。请使用

    下载imagemagick
    sudo apt-get -y install imagemagick
    

    在您开始使用Minimagick 之前。

    【讨论】:

      猜你喜欢
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      相关资源
      最近更新 更多