0

我正在处理 Mongoid、carrierwave 和 gridFS 来存储我的上传。

例如,我有一个模型文章,包含一个文件上传(一张图片)。

class Article
  include Mongoid::Document
  field :title, :type => String
  field :content, :type => String
  mount_uploader :asset, AssetUploader
end

但是我只想存储一次文件,以防我为不同的文章上传多次相同的文件。

我看到 GridFS 有一个 MD5 校验和。

防止相同文件重复的最佳方法是什么?

编辑:事实上,在我的网站上,用户可以上传文件。但是为了避免存储多个相同的文件,我只想通过关联表建立链接。没什么难的,但是如何做到这一点,下面指定的库。如果你有任何想法。

谢谢

4

1 回答 1

0

根据您的应用程序,重复数据删除很可能是一个有价值的目标,但我解决这个问题的第一直觉是扭转它 - 为什么您期望大量重复上传?您能否减少这种可能性,以便用户不必花费不必要的时间上传,并且您不必花费不必要的精力来处理重复检查?

如果您创建一个Asset模型并将上传器附加到该模型,然后添加一个Article references_one :asset, 并让用户在创建新文章时从现有资源中进行选择,或者在需要时上传新文章,该怎么办?

如果您给出一个简化的示例,我可能不理解您的应用程序域(如果是,请进一步解释),重复肯定仍然可能是一个真正的问题,但我首先要问为什么会出现大量重复,并且接下来收集一些数据,了解它在您的应用程序和数据集中确实存在多少问题,然后再花费大量精力来解决它。

于 2010-12-30T20:07:43.890 回答