我正在研究 ruby on rails。我正在尝试做一个文件附件(图像/音频/视频)。
所以我有一个常用的方法,比如
byteArray = StringIO.new(File.open("path").read)
是否可以找到 byteArray 的内容类型来检查上传的文件是否是 ruby 中的图像/音频/视频/pdf。
我正在研究 ruby on rails。我正在尝试做一个文件附件(图像/音频/视频)。
所以我有一个常用的方法,比如
byteArray = StringIO.new(File.open("path").read)
是否可以找到 byteArray 的内容类型来检查上传的文件是否是 ruby 中的图像/音频/视频/pdf。
我看到这被标记了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。这意味着如果您使用 alambda
来确定附件 content_type 是否包含image
或video
如果你给我一些关于你想要达到的目标的更多信息,我可以给你一些重构的代码来帮助你解决问题:)