首页 > 解决方案 > 您将如何在 Rails 控制器中验证上传文件的 mime_type?

问题描述

我在控制器操作中加密我的 Shrine 文件上传,并且在做任何其他事情之前需要某种方式来验证他们的 mime 类型。Shrine 的验证插件很棒,但它们不适用于加密文件。我需要想办法解决这个问题。

这里的建议是针对 ActiveStorage 的,而且似乎不合适。第一篇文章建议在模型中进行验证,但我需要在控制器中进行。可能像...

def create
 image = params.require(:id_doc).fetch(:image)
 respond_to do |format|
  if image.content_type == 'image/jpeg' || image.content_type == 'image/png' && image.size <= 3.megabytes
   #encrypt file and save
   format.html { redirect_to root_path }
  else
   format.html { redirect_to onboard_queued_path }
 end
end

即便如此,它似乎也不安全。我可以更改文件名。这个答案似乎很有希望。或者,我可以使用,但我不想安装整个 gem。

标签: ruby-on-railsvalidationencryptionshrine

解决方案


答案在文档中。

因为我想在将文件传递给其他任何东西之前确定 mime 类型,所以我只需Shrine.mime_type(image)在控制器中执行。


推荐阅读