我需要知道回形針附件圖像樣式的文件大小(不僅:original
樣式中已有專用字段),而且我現在有點掙扎。恢復特定回形針圖像樣式的文件大小
我沒有發現任何解決方案做到這一點的模型內部
我已經安裝了
paperclip-meta
寶石,但這種寶石真的返回款式尺寸,而不是文件大小。我可能能夠在文件上傳到S3後檢索文件大小。我已閱讀了有關發送Http頭部請求或類似內容並解析返回的內容。我對此並不是很放心,這似乎有點複雜,因爲這些文件是在本地生成的,應該可以在某個時間由服務器訪問。
我需要知道回形針附件圖像樣式的文件大小(不僅:original
樣式中已有專用字段),而且我現在有點掙扎。恢復特定回形針圖像樣式的文件大小
我沒有發現任何解決方案做到這一點的模型內部
我已經安裝了paperclip-meta
寶石,但這種寶石真的返回款式尺寸,而不是文件大小。
我可能能夠在文件上傳到S3後檢索文件大小。我已閱讀了有關發送Http頭部請求或類似內容並解析返回的內容。我對此並不是很放心,這似乎有點複雜,因爲這些文件是在本地生成的,應該可以在某個時間由服務器訪問。
我有同樣的需要。正如您所提到的,回形針附件具有:original
樣式文件大小的數據庫字段,但size
方法只是返回該值。
我想要一個快速解決方案,可以確定文件系統或S3(我同時使用)中的附件大小,而不必實際執行HTTP頭檢查。在觀看了回形針::存儲結構,我意識到我可以通過將覆蓋size
方法對每個存儲方法在下面我config/initializers/paperclip.rb
:
module Paperclip
module Storage
module Filesystem
def size(style_name = default_style)
if original_filename
File.size(path(style_name))
else
false
end
end
end
module S3
def size(style = default_style)
if original_filename
s3_object(style).content_length
else
false
end
rescue Aws::Errors::ServiceError => e
false
end
end
end
end
的paperclip-meta
寶石確實出現有size
方法,除了圖像尺寸,寬高比等。我不確定這是否是比您嘗試更新的更新。它具有緩存數據庫中的值的優點。
感謝Morgant,您的解決方案可能適用於S3,但我認爲它需要在獲取其'content_length'之前加載S3對象。在發送到S3之前,我已經找到了每種樣式的臨時文件的解決方案。它在這裏:https://stackoverflow.com/questions/14803185/paperclip-attachment-file-size – Maxence
@Maxence我沒有調查性能,但發現它足以滿足我的需求。它必須獲取S3對象,但可能只是一個列表,而不是數據的完整獲取。我需要確定文件的大小,一旦它已經在S3上(執行各種數據遷移),但是在上傳之前需要它或緩存它,我寧願你的解決方案。 – morgant