ruby-on-rails – Rails:用Paperclip防止重复的照片上传?
发布时间:2020-12-16 22:35:10 所属栏目:百科 来源:网络整理
导读:如果用户尝试使用Paperclip将相同的照片两次上传到Rails应用程序,是否有抛出验证错误? Paperclip似乎没有提供此功能… 我使用的是Rails 2.3.5和Paperclip(显然). (或者至少有一个) 使用Beerlington的建议,我决定用MD5校验和比较: class Photo ActiveRecord
如果用户尝试使用Paperclip将相同的照片两次上传到Rails应用程序,是否有抛出验证错误? Paperclip似乎没有提供此功能…
我使用的是Rails 2.3.5和Paperclip(显然). (或者至少有一个) 使用Beerlington的建议,我决定用MD5校验和比较: class Photo < ActiveRecord::Base #... has_attached_file :image #,... before_validation_on_create :generate_md5_checksum validate :unique_photo #... def generate_md5_checksum self.md5_checksum = Digest::MD5.hexdigest(image.to_file.read) end def unique_photo photo_digest = self.md5_checksum errors.add_to_base "You have already uploaded that file!" unless User.find(self.user_id).photos.find_by_md5_checksum(photo_digest).nil? end # ... end 然后我刚刚在我的照片表中添加了一个名为md5_checksum的列,瞧瞧!如果您尝试上传相同的照片,我的应用程序会抛出验证错误! 不知道这是多么高效/低效,所以重构的欢迎! 谢谢! 解决方法
如何在图像文件上执行MD5?如果它是完全相同的文件,MD5哈希将是相同的两个图像.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |