我使用名为paperclip的gem将图像上传到rails服务器上的ruby。图像上传正确并且正在运行。我正在使用md5哈希,这样就可以向rails服务器发出一个请求,准确地返回我的脚本需要上传的图片(我不想重复)。
在脚本中,我正在使用
成功计算md5 require 'digest/md5'
和md5 = Digest::MD5.file(filename).hexdigest
在服务器上检查md5是否相同(要上传的图像与服务器上的图像)我需要计算服务器上每个回形针图像的md5。
图像称为TestImages,模型看起来像这样
class TestImage < ActiveRecord::Base
has_attached_file :image, styles: {thumbnail: '100x100', small: '350x350'}
validates_attachment :image, content_type: {content_type: ["application/octet-stream", "multipart/form-data", "image/jpg", "image/jpeg", "image/png", "image/gif"]}
belongs_to :build
belongs_to :test
end
人们说回形针已经添加了指纹功能(md5表示),但我不确定如何设置它。它似乎是自动完成的,但需要存储为数据库中的列?这是我正在查看的另一篇文章Rails: How does MD5 checksum work in paperclip?
如果使用回形针(回形针指纹)不起作用,我可以使用与脚本相同的摘要/ md5方法,但我似乎无法找到回形针图像的完整图像路径。
使用此功能无效
image.md5 = Digest::MD5.file(test_image.image.path).hexdigest
这给出了以下错误:
Errno::ENOENT (No such file or directory @ rb_sysopen - /Users/scott.bishop/Code/visual-automation/public/system/test_images/images//original/testBasic_2x.png):
app/controllers/test_images_controller.rb:37:in `create'
我不确定它想要什么样的路径。任何帮助将不胜感激。
答案 0 :(得分:0)
事实证明回形针图像路径有效。
require 'digest/md5'
image.md5 = Digest::MD5.file(PAPER_CLIP_IMAGE.path).hexdigest