1

据我了解,对于version上传器中定义的每个 CarrierWave 都会将原始文件从缓存复制到 tmp 路径,并将此 tmp 文件移交给为此版本定义的任何处理。然后它可以存储所有文件。有时(例如,当为视频文件生成缩略图时)这种复制可能非常昂贵。我可以让 CarrierWave 不复制并让我在原始文件处于缓存时从原始文件生成版本吗?

编辑我有move_to_cachemove_to_store返回真(哎呀,我很快忘记了自己的头)。我写了一个测试处理模块CarrierWave::RMagick

module CarrierWave
  module Thumbnailer
    def generate_thumbnails
      debugger
      x = 1
    end
  end
end

我在上传器中有以下几行

version :thumb do
  process :generate_thumbnails
end

但是,当在debugger(我可以开始处理的)CarrierWave 上停止执行时,CarrierWave 已经复制并重命名了上传的文件。我可以在缓存目录中看到它们。

4

1 回答 1

2

从自述文件中查看大文件下的自述文件:

class MyUploader < CarrierWave::Uploader::Base
  def move_to_cache
    true
  end
  def move_to_store
    true
  end
end

当 move_to_cache 和/或 move_to_store 方法返回 true 时,文件将分别移动(而不是复制)到缓存和存储。

于 2012-06-03T16:03:58.277 回答