获取tmp文件夹中的图像大小

时间:2014-09-26 12:17:10

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

我想知道如何获取已保存到tmp文件夹的文件大小。我使用carrierwave上传我的图像,如果验证失败,图像的缩略图显示在表单

<% if build.object.image? %>
  <%= image_tag build.object.image_url :small_animal_image %>
  <%= build.hidden_field :image_cache %> 
<% end %>

据我所知,这是正常行为。

我想上传原始图片的文件大小但是使用尺寸方法我只返回0

def example_method
image = params[:animal][:animal_images_attributes]

image.each do |k,v|
img_cache = v["image_cache"]
img_cache_size = img_cache.size
img = v["image"]

  ap(img_cache)
  ap(img)
  ap(img_cache_size)

 end
end

控制台中上述内容的输出是

"0"
""
#<ActionDispatch::Http::UploadedFile:0x00000002fe40c8 @tempfile=#<Tempfile:/tmp/RackMultipart20140926-3003-1rfzkcq>, @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">
0

这就是哈希的样子

animal_images_attributes"=>{"0"=>{"image_cache"=>"", "image"=>#<ActionDispatch::Http::UploadedFile:0x00000002fe40c8 @tempfile=#<Tempfile:/tmp/RackMultipart20140926-3003-1rfzkcq>, @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"}}}

这甚至可能吗?

赞赏任何指针

由于

1 个答案:

答案 0 :(得分:1)

你可以用这个:

tempfilepath = params[:animal][:animal_images_attributes][:image].tempfile.path
size = `identify #{tempfilepath} | awk '{print $7}'`

确保您已确定在终端中工作。

<强>更新

更简单的解决方案是

File.size(tempfilepath)