ruby on rails 3-回形针附件文件大小



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

@user.attachment_file_size似乎不起的作用

@user.attachment(:style).size

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

除了原始样式,我也没有找到如何获得给定样式的文件大小

如回形针源代码中所示,@user.attachment.size返回最初指定的文件大小。没有办法为特定的风格获得它。。。

一个解决方案是:

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

但根本没有效率。

要做到这一点,您可能应该在附件表中添加一些"自定义大小"字段,一旦为每个样式保存了附件,您就会填充这些字段。。。

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

@user.last.photo_file_size

对于给定对象的样式,您可以使用Paperclip::style#geometry:在样式哈希中获得类似"WIDTHxHEIGHT"的字符串

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

然后您可以将字符串拆分为具有高度或宽度:

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

看起来这实际上是可能的

只需为每种样式和应用大小方法创建临时文件即可。

假设您有两种样式largesmall用于名为image的附件,并且您在模型large_sizesmall_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_sizesmall_size将与每个样式文件大小一起弹出。例如,这将在文件发送到S3之前完成。因此,没有额外的查询S3中的文件头。

相关内容

  • 没有找到相关文章

最新更新