代码之家  ›  专栏  ›  技术社区  ›  DNorthrup

Rails 6-基于MIME类型过滤文件

  •  0
  • DNorthrup  · 技术社区  · 5 年前

    我正在使用CarrierWave/RMagick上传/版本上传并在视图中显示它们。

    我可以通过利用

      def image?(new_file)
        %w(jpg jpeg gif png).include?(new_file.extension)
      end
      #
      version :thumb, :if => :image? do
        process resize_to_fit: [100, 100]
      end
    

    在我看来,我已经开始使用复杂的if/else来利用MIME类型,但我注意到这是不可伸缩的,我不喜欢它有多脏。

    作为一个例子

          <% @workflow.attachments.each do |f| %>
            <% if f.content_type.start_with?("image") %>
              <%= image_tag f.thumb.url %>
            <% elsif f.content_type.start_with?("application/zip") %>
              Text File
            <% end %>
          <% end %>
    

    有没有一种更健康的方法来做这件事?我目前有一个黑名单设置拒绝php/js等,我可以通过每个文件类型,我可以'假设'上传,但有一个主要的if/else在视图(特别是)感觉错了。

    0 回复  |  直到 5 年前