ruby - 不同版本的不同文件扩展名

标签 ruby carrierwave

我正在使用载波上传图片。我需要我的主图像版本 保留其原始格式,但要转换其他版本 到 gif。

目前我正在做这样的事情:

 def filename
   change_ext_to_gif(super)
 end

 def change_ext_to_gif(ext)
   ext.chomp(File.extname(ext)) + ".gif"
 end

 version :preview do
   process :resize_to_fill => [60, 60]
   process :convert => "gif"
 end

 version :full do
   process :resize_to_limit => [320, 320]
   process :convert => "gif"
 end

 version :mobile do
   process :resize_to_limit => [72, 96]
   process :convert => "gif"
 end

当然,这也改变了我原始文件的扩展名。是 有什么办法可以解决这个问题?我想我需要重写一些方法 在版本的 block 中。但是我无法弄清楚它们(我 尝试覆盖文件名和 url 这有助于但会阻止版本 文件被删除)。

最佳答案

您可以像这样跳过每个版本使用的文件名:

 version :mobile do
   process :resize_to_limit => [72, 96]
   process :convert => "gif"
   def full_filename(for_file = model.logo.file)
     "fiename here"
   end
 end

因此,只需保留您喜欢的原始文件名,然后根据版本进行更改。这里的 wiki 上还有更多示例:

https://github.com/jnicklas/carrierwave/wiki/How-To%3A-Move-version-name-to-end-of-filename%2C-instead-of-front

关于ruby - 不同版本的不同文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5292113/

相关文章:

ruby - 如果文件不存在,则从存储在数组方法中的路径值中删除文件失败

ruby - 否定前瞻忽略电子邮件线程中的样板文本

ruby-on-rails - Carrierwave、Rails 4 和多次上传

ruby-on-rails - 即使照片确实上传,Carrierwave 也会返回 406 Not Acceptable

ruby-on-rails - 使用载波图像作为 CSS 背景图像的 Turbolinks

ruby-on-rails - 获取载波上传的文件大小

Ruby : Watir : 如何避免从 Net::ReadTimeout 关闭浏览器?

ruby - 如何在非传统空格上分割字符串?

ruby-on-rails - 应该将 gems 与该应用程序 bundle 在一起吗?