Ruby on rails 3 在rails中查找上载文件的内容类型
我正在RubyonRails上工作。我正在尝试进行文件附件(图像/音频/视频) 所以我有一个常用的方法,比如Ruby on rails 3 在rails中查找上载文件的内容类型,ruby-on-rails-3,paperclip,bytearray,mime-types,stringio,Ruby On Rails 3,Paperclip,Bytearray,Mime Types,Stringio,我正在RubyonRails上工作。我正在尝试进行文件附件(图像/音频/视频) 所以我有一个常用的方法,比如 byteArray = StringIO.new(File.open("path").read) 是否可以找到byteArray的内容类型,以检查上传的文件是否为ruby格式的图像/音频/视频/pdf。我看到这是标记为的回形针,因此我将向您介绍如何使用回形针: class Attachment < ActiveRecord::Base has_attached_
byteArray = StringIO.new(File.open("path").read)
是否可以找到byteArray的内容类型,以检查上传的文件是否为ruby格式的图像/音频/视频/pdf。我看到这是标记为
的回形针,因此我将向您介绍如何使用回形针:
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
类附件“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]:[:缩略图]}
def是视频吗?
attachment.instance.attachment\u content\u type=~%r(视频)
结束
def是_图像吗?
attachment.instance.attachment\u content\u type=~%r(图像)
结束
结束
如果你想把你的文件做成回形针,它基本上已经把它切成了内容类型。这意味着如果使用确定附件内容类型是否包含图像
或视频
如果你能给我一些你想要实现的更多信息,我可以给你一些重构代码来帮助你解决问题:)你用回形针上传文件吗?@Ramiz Raja ya一旦我为附件设置了内容类型,我就用回形针保存它。目前我有3种不同的方法来保存图像、音频和视频。因此,我尝试对其进行概括,以便找到byteArray的内容类型,设置内容类型并将其保存在纸夹中。您可以将上载文件的内容类型
作为上载文件的纸夹
生成列\u content\u type
。您是否希望按文件类型限制上载?您知道为什么吗styles lambda接收附件文件对象,但对于处理器,它接收附件模型对象?不,抱歉-该代码现在可能也过时了:(