匹配上传的PDF文档的重复?

时间:2016-12-26 09:55:21

标签: ruby ruby-on-rails-4 pdf file-upload paperclip

我正在寻找防止使用我的应用程序复制相同的pdf文档。

我知道这是一个非常简单的任务以及文档的名称,但我不想将PDF副本与其名称相匹配。

这里面临挑战,我想根据内容检查上传文档的重复,而不是最终用户上传的文档名称。

我过去从未阻止这种情况,但想知道,如果有人有办法解决我的问题。

您的解决方案或技巧将非常有用。

先谢谢,并等待一个奇怪的解决方案。

2 个答案:

答案 0 :(得分:4)

我认为最好的方法是从上传的文件生成校验和,存储在数据库(或其他地方),然后检查数据库中是否已存在新上传文件的校验和。

在Ruby中,您可以使用Digest模块来执行此操作:

require "digest"
data = File.read("some_file_path")
checksum = Digest::MD5.hexdigest(data)

您不必检查文件名,只需使用此校验和。

答案 1 :(得分:1)

一种简单的方法是通过MD5校验和查看。不是逐行读取或解析文件,而是为它们生成MD5摘要并进行匹配。具有相同MD5值的那些是相同的文件。

如何在Ruby中为文件生成MD5?

require 'digest'
Digest::MD5.file("path/tp/pdf").hexdigest
# md5 string