新手问题 [SOLVED] 怎么在 Carrierwave 中为不同的 Version 设置不同的文件名后缀?

ikunsam · 2015年02月17日 · 最后由 ikunsam 回复于 2015年02月17日 · 2215 次阅读

最近在用 Carrierwave 做媒体文件管理,现在碰到一个问题是,上传的源文件如果是 psd 或者 svg 格式的,我会将源文件不做任何处理进行保存,但同时会保存一份其他版本,比如 thumb ,thumb 版本我会用 MiniMagick 转换成 PNG 格式

version :thumb do
  process :convert => 'png'
  process :resize_to_limit => [200, 200]
end

Uploader 中重写了 Filename

def filename
  "#{Time.now.to_i}.#{file.extension}" if original_filename
end

那么问题来了,这样保存之后的文件后缀名都是 svg(虽然 thumb 版本格式是 PNG 的),在页面就无法显示 thumb 图片。 求点拨!

祝各位 Rubist 春节愉快,羊年吉祥!

version :thumb do
  ...
  def full_filename(for_file=file)
    # your code here
  end
end

@zaki8848 谢谢提示,我这样写,实现了我要的功能

version :thumb do
  process :convert => 'png'
  process :resize_to_limit => [200, 200]

  def full_filename(for_file = file)
    "thumb_#{for_file.split('.')[0]}.png"
  end
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号