2013-02-10 106 views
4

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

@user.attachment_file_size似乎 不工作

@user.attachment(:style).size 

给不相关的实际文件大小

+1

最新版本的回形针不会给我file_size。不知道发生了什么。 – courtsimas 2013-05-13 15:45:36

回答

5

我没有找到如何获得文件大小对于给定的风格,除原来的之一。

如看到in the paperclip source code,@user.attachment.size返回最初分配的文件大小。有没有办法得到它的特定风格。

一个解决办法是:

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

但效率不高的。

把它做好,你应该加入您的附件表中的一些“自定义大小”场1次附件保存每个样式,你会填补...

+0

您好皮埃里亚,可能不再是你的问题。但是我已经找到了一个解决方案,通过在上传到S3之前捕获每个样式的临时文件。 – Maxence 2017-12-08 12:47:05

4

用户的ID(例如) 用户有发现一些:照片

@user.last.photo_file_size 
+0

我得到零...不起作用 – 2013-02-12 19:47:48

+0

https://github.com/thoughtbot/paperclip#usage – xdsemx 2013-02-13 06:23:23

0

你可以像“为WIDTHxHEIGHT字符串“里面的风格哈希,为给对象的风格,采用Paperclip::Style#geometry

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

比你可以分割字符串有高度或宽度:

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

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

看起来实际上是可能的

只需为每个样式应用临时文件并应用尺寸方法。

假设你有两种风格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将每种风格的文件大小popuated的字段。例如,在将文件发送到S3之前,这将完成。所以没有额外的查询来自S3的文件头。