如何从S3获取文件大小和类型?

时间:2012-07-24 15:30:58

标签: ruby-on-rails ruby-on-rails-3 amazon-s3 carrierwave

我正在使用carrierwave_direct将文件直接上传到S3。我需要将文件信息保存到数据库中 - 例如文件类型和大小。好奇最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法是使用imagemagick identify command。在保存文件之前/之后,您需要计算它的大小。该文件必须是本地的(如果它已经在S3上,你必须再次下载):

identify the-image.jpg
#=> rose.jpg JPEG 640x480 DirectClass 87kb 0.050u 0:01

它将输出您必须解析的字符串。 RMagick有一个api,会自动给你宽度/高度/类型,但我似乎无法找到它(这可能会有所帮助:RMagick returns nil reading JPEG)。

答案 1 :(得分:0)

this thread中所述,最佳方法是使用 head_object 方法,该方法不会下载文件本身的内容。

sdk-for-ruby docs: HEAD操作从对象检索元数据,而不返回对象本身。如果您仅对对象的元数据感兴趣,则此操作很有用。要使用HEAD,您必须对该对象具有READ访问权限。

因此,对于file_size和file_type,您可以:

TabItem