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

Ruby on rails 获取tmp文件夹中图像的大小,ruby-on-rails,ruby,ruby-on-rails-4,carrierwave,Ruby On Rails,Ruby,Ruby On Rails 4,Carrierwave,我想知道如何获得保存到临时文件夹的文件的大小。我正在使用carrierwave上传我的图像,如果验证失败,表单中将显示图像的缩略图 <% if build.object.image? %> <%= image_tag build.object.image_url :small_animal_image %> <%= build.hidden_field :image_cache %> <% end %> 控制台中的上述输出为 "0" "

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

<% if build.object.image? %>
  <%= image_tag build.object.image_url :small_animal_image %>
  <%= build.hidden_field :image_cache %> 
<% 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
“0”
""
#
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"}}}
animal_images_attributes”=>{“0”=>{“image_cache”=>,“image”=>,“_destroy”=>“false”}
这可能吗?

您可以使用:

tempfilepath = params[:animal][:animal_images_attributes][:image].tempfile.path
size = `identify #{tempfilepath} | awk '{print $7}'`
确保您有在终端工作的标识

更新

一个更简单的解决方案是

File.size(tempfilepath)

非常感谢,请您向我解释一下第二部分好吗?以及如何将大小作为数字而不是字符串返回?这样我就可以在其上运行比较,identify实际上使用imagemagick提供有关图像的信息,第二部分给出的是用于从显示的信息b中取出大小y标识如下所示:
cuscopanorama.jpg JPEG 1000x284 1000x284+0+0 8位DirectClass 66KB 0.000u 0:00.000
我们将从这里获得66KB。如果您只需要数字,请尝试使用正则表达式方法示例:
“66KB”。扫描(/\d+/).join.to_i
我刚刚完成的大小=文件大小(tempfilepath)这似乎很管用:-)谢谢你的帮助,感谢你的帮助,谢谢你,老兄,谢谢你,我会自己用这个:p这是一个更好的解决办法。我也会加上这个:)
File.size(tempfilepath)