我想知道如何获取已保存到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"}}}
这甚至可能吗?
赞赏任何指针
由于
答案 0 :(得分:1)
你可以用这个:
tempfilepath = params[:animal][:animal_images_attributes][:image].tempfile.path
size = `identify #{tempfilepath} | awk '{print $7}'`
确保您已确定在终端中工作。
<强>更新强>
更简单的解决方案是
File.size(tempfilepath)