2013-02-10 108 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的文件頭。