📅  最后修改于: 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 已经内置了验证功能,而且还提供了自定义验证方法的接口。通过使用主动存储验证,我们可以更好地保证网站的安全性和可靠性。