【问题标题】:Match duplication of the uploaded PDF document?匹配上传的 PDF 文档的重复项?
【发布时间】:2016-12-26 09:55:21
【问题描述】:

我正在考虑防止与我的一个应用程序重复相同的 pdf 文档。

我知道与文档名称一起完成这项任务非常简单,但是我不想通过名称来匹配 PDF 副本。

挑战来了,我想根据内容来检查上传文件的重复,而不是最终用户上传的文件的名称。

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

你的解决方案或技巧会很有帮助。

在此先感谢,并等待相同的奇怪解决方案。

【问题讨论】:

  • 这取决于你对重复的定义。具有完全相同视觉内容但内部元数据不同的 PDF 是否重复?

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


【解决方案1】:

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

在 Ruby 中,您可以使用 Digest 模块来做到这一点:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      相关资源
      最近更新 更多