回形针附件文件大小

时间:2013-02-10 22:11:53

标签: ruby-on-rails-3 paperclip attachment filesize

如何获取回形针附件的每种样式的文件大小?

@user.attachment_file_size似乎不起作用

@user.attachment(:style).size

给出与实际文件大小无关的数字

4 个答案:

答案 0 :(得分:6)

我没有找到如何获得给定样式的文件大小 ,而不是原始文件。

in the paperclip source code所示,@user.attachment.size返回最初分配的文件大小。没有办法让它成为一种特定的风格...

解决方案是:

open(@user.attachment(:style)).size

但根本没有效率。

为了做得好,你应该添加一些"自定义尺寸"附件表中的字段,一旦为每种样式保存附件,您将填写...

答案 1 :(得分:4)

用户按ID查找(例如) 用户有:照片

@user.last.photo_file_size

答案 2 :(得分:0)

您可以使用Paperclip::Style#geometry在样式哈希中获取类似“WIDTHxHEIGHT”的字符串,以获取对象的样式:

string = @user.attachment.styles[:size].geometry

您可以将字符串拆分为高度或宽度:

width = string.split("x")[0]

height = string.split("x")[1]

答案 3 :(得分:0)

实际上似乎有可能

只需要为每种样式设置临时文件并应用尺寸方法。

让我们假设您的附件中有两个样式largesmall名为image,并且您已在模型large_size中创建了两个额外字段{ {1}}保存这些值。

只需将以下代码添加到您的模型中:

small_size

字段before_create :assign_sizes private def assign_sizes self.large_size = image.queued_for_write[:large].size.to_i self.small_size = image.queued_for_write[:small].size.to_i end large_size将与每个样式文件大小一起使用。这将在文件发送到S3之前完成。因此,没有额外的查询来自S3的文件头。