3

我正在研究 ruby​​ on rails。我正在尝试做一个文件附件(图像/音频/视频)。

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

byteArray = StringIO.new(File.open("path").read)

是否可以找到 byteArray 的内容类型来检查上传的文件是否是 ruby​​ 中的图像/音频/视频/pdf。

4

1 回答 1

7

我看到这被标记了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 是否包含imagevideo

如果你给我一些关于你想要达到的目标的更多信息,我可以给你一些重构的代码来帮助你解决问题:)

于 2013-10-23T09:59:14.287 回答