我正在使用ruby on rails。我正在尝试做文件附件(图像/音频/视频)。
所以我有一个像
这样的常用方法byteArray = StringIO.new(File.open("path").read)
是否可以找到byteArray的内容类型来检查上传的文件是否是ruby中的image / audio / video / pdf。
答案 0 :(得分:6)
我看到这被标记为paperclip
,所以我会告诉你我们是如何用回形针做的:
class Attachment < ActiveRecord::Base
has_attached_file :attachment,
styles: lambda { |a| a.instance.is_image? ? {:small => "x200>", :medium => "x300>", :large => "x400>"} : {:thumb => { :geometry => "100x100#", :format => 'jpg', :time => 10}, :medium => { :geometry => "300x300#", :format => 'jpg', :time => 10}}},
:processors => lambda { |a| a.is_video? ? [ :ffmpeg ] : [ :thumbnail ] }
def is_video?
attachment.instance.attachment_content_type =~ %r(video)
end
def is_image?
attachment.instance.attachment_content_type =~ %r(image)
end
end
如果您设法将文件放入Paperclip,它基本上已将其切换为content_type。这意味着,如果您使用lambda
来确定附件content_type是否包含image
或video
如果你给我一些关于你想要达到的目标的更多信息,我可以给你一些重构的代码来专门帮助解决你的问题:)