Carrierwave和tmp文件

时间:2014-09-26 14:16:26

标签: ruby-on-rails ruby ruby-on-rails-4 carrierwave

当我的表单中的图像验证失败时,载波创建了tmp文件夹中的图像副本,我注意到有时会使用缓存副本来渲染图像,或者在我的情况下使用@tempfile路径,这似乎是无论如何从tmp目录中检索图像

"animal_images_attributes"=>{"0"=>{"image_cache"=>"", "image"=>#<ActionDispatch::Http::UploadedFile:0x007fbc841d1e90 @tempfile=#<Tempfile:/tmp/RackMultipart20140926-7391-1j7crf4>, @original_filename="cat.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"animal[animal_images_attributes][0][image]\"; filename=\"cat.jpg\"\r\nContent-Type: image/jpeg\r\n">, "_destroy"=>"false"}

您将看到图像设置为

"image"=>#<ActionDispatch::Http::UploadedFile:0x007fbc841d1e90 @tempfile=#<Tempfile:/tmp/RackMultipart20140926-7391-1j7crf4>

在我的情况下是从

中提取图像
/tmp/1411739943-7391-1974

我想要删除此文件夹,但只有&#34;图像&#34;值继续..我想知道如何使用此值删除tmp文件,是否有某种转换正在进行?如果我有image_cache路径可用,那么这将是相对简单的

def remove_cache
  image = params[:animal][:animal_images_attributes]["0"]

  cache_name = image["image_cache"]
  # get the cache directory
  cache_dir = cache_name.split('/')
  FileUtils.rm_rf(File.join("#{Rails.root}", "/public/uploads/tmp/", cache_dir))
end

in this case cache_name would be '/tmp/1411739943-7391-1974'

希望这是有道理的并且有一个解决方案。

任何帮助表示赞赏

谢谢

0 个答案:

没有答案