📜  主动存储验证 (1)

📅  最后修改于: 2023-12-03 15:06:18.207000             🧑  作者: Mango

主动存储验证

简介

主动存储验证(Active Storage Verification)是一种验证用户上传文件的方法。在网站中,用户可以上传各种类型的文件,包括照片、视频等等,这些文件都需要经过验证才能被接受。主动存储验证是一种在上传文件时自动进行验证的方法,旨在提高文件上传的安全性和可靠性。

如何使用主动存储验证

在 Rails 6 中,Active Storage 已经内置了验证功能,只需要在存储器(Storage Service)上调用验证方法即可。例子如下:

class Avatar < ApplicationRecord
  has_one_attached :image

  validate :image_format

  def image_format
    if image.attached? && !image.content_type.in?(%w(image/jpeg image/png))
      errors.add(:image, 'must be a JPEG or PNG')
      image.purge
    end
  end
end

在上面的例子中,我们验证了上传的图片必须是 JPEG 或者 PNG 格式,否则会被拒绝上传,并同时删除已上传的图片。其中 has_one_attached :image 方法指示一个模型可以附带一个文件,validate :image_format 则指示在保存模型之前要运行 image_format 方法。

如何创建自定义验证

我们可以创建自定义验证方法来满足业务需求。例如在上传视频时,我们需要验证视频的长度、格式等。在后台代码中,我们可以定义以下自定义验证:

class Video < ApplicationRecord
  has_one_attached :file

  validate :file_format

  def file_format
    if file.attached? && !file.content_type.in?(%w(video/mp4 video/avi))
      errors.add(:file, 'must be a MP4 or AVI')
      file.purge
    end
  end
end

这里我们验证了视频格式必须是 MP4 或者 AVI,否则会被拒绝上传,并且删除已上传的文件。如果我们需要验证视频的长度是否超过一定时间,可以使用视频处理库如 FFMPEG 完成此项任务。

总结

主动存储验证是一种验证用户上传文件的有效方法。它能够提高文件上传的安全性和可靠性。在 Rails 6 中,Active Storage 已经内置了验证功能,而且还提供了自定义验证方法的接口。通过使用主动存储验证,我们可以更好地保证网站的安全性和可靠性。