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