Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 在rails中查找上载文件的内容类型_Ruby On Rails 3_Paperclip_Bytearray_Mime Types_Stringio - Fatal编程技术网

Ruby on rails 3 在rails中查找上载文件的内容类型

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_

我正在RubyonRails上工作。我正在尝试进行文件附件(图像/音频/视频)

所以我有一个常用的方法,比如

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接收附件文件对象,但对于处理器,它接收附件模型对象?不,抱歉-该代码现在可能也过时了:(