【问题标题】:Ruby on rails - Failed to manipulate with MiniMagick / CarrierWave UploaderRuby on rails - 无法使用 MiniMagick / CarrierWave Uploader 进行操作
【发布时间】:2012-08-27 13:32:58
【问题描述】:

这是我尝试上传非图片的内容(例如 mp3)时收到的消息。

使用 MiniMagick 操作失败,可能不是图像? 原始错误:MiniMagick::Invalid

所以我尝试通过检查文件扩展名来设置条件。仅在不是 mp3 时才调整大小。

这是我使用 CarrierWave 的 FileUploader:

class FileUploader < CarrierWave::Uploader::Base

include CarrierWave::MiniMagick

...

if File.extname(File.name) != ".mp3"
   process :resize_to_fit => [100, 100]

  version :thumb do
    process :resize_to_fit => [80, 80]
  end

end


...

end 

File.name 只提供不带当前文件扩展名的名称。您知道为我提供名称 + 扩展名的变量吗?

编辑:

我在我的控制器中找到了替代方案:

 def create
    @myfile = File.new(params[:icon])

    if @myfile.save

        if @myfile.file.file.extension != "mp3"
          @myfile.file.resize_to_fit(100, 100)

          @file.save
        end
     end

但现在我被我的 CarrierWave FileUploader 卡住了:

version :thumb do
    process :resize_to_fit => [80, 80]
  end

太复杂了,我只需要 MiniMagick 来处理图片

我只需要一个小条件:

如果 file_is_image? ==> 调整大小 + 创建缩略图

else ==> 什么都不做

谢谢

【问题讨论】:

  • 请注意:为什么同时包含 minimagick 和 rmagick?
  • 我实际上只使用 MiniMagick 只是一个错误谢谢。

标签: ruby-on-rails ruby ruby-on-rails-3 carrierwave uploader


【解决方案1】:
process :resize_to_fit => [100, 100]; :if => :processable?

def processable? upload_name
  File.extname(upload_name.path) != ".mp3"
end

【讨论】:

  • 未定义的局部变量或方法“文件名”。 File.name 只为我提供不带当前文件扩展名的名称。您知道为我提供名称 + 扩展名的变量吗?谢谢
  • 尝试通过model.file.name访问它
  • 嗯...你的代码在哪里?因为model 应该是有效的,请参阅文档:github.com/jnicklas/carrierwave
  • 我的代码在类 FileUploader <:uploader::base>
  • 来自文档:The model variable points to the instance object the uploader is attached to.
猜你喜欢
  • 2016-04-12
  • 2012-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多