0

アップロードを保存するために、Mongoid、carrierwave、および gridFS を扱っています。

たとえば、ファイルのアップロード (写真) を含むモデル記事があります。

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

しかし、異なる記事のために同じファイルを何度もアップロードする場合に備えて、ファイルを一度だけ保存したいと思います。

GridFS には MD5 チェックサムがあることがわかりました。

同一ファイルの重複を防ぐ最善の方法は何ですか?

編集: 実際、私の Web サイトでは、ユーザーはファイルをアップロードできます。しかし、複数の同一ファイルを保存することを避けるために、関連付けテーブルを介してリンクを作成したいと思います。難しいことは何もありませんが、これを行う方法は以下に指定されているライブラリです。アイデアがあれば。

ありがとう

4

1 に答える 1

0

アプリケーションによっては、重複排除は非常に価値のある目標かもしれませんが、この問題にアプローチする私の最初の本能は、それを好転させることです.なぜ多くの重複アップロードが予想されるのでしょうか? その可能性を減らして、ユーザーがアップロードに無駄な時間を費やす必要がないようにし、重複のチェックを処理するために無駄な労力を費やす必要がないようにできますか?

Assetモデルを作成し、それにアップローダーをアタッチしてArticle references_one :assetから、新しい記事を作成するとき、または必要に応じて新しい記事をアップロードするときに、ユーザーが既に利用可能なアセットから選択できるようにするとどうなるでしょうか?

単純化された例を示している場合、アプリケーション ドメインを理解できない可能性があります (その場合はさらに説明してください)。重複が依然として実際の問題である可能性は確かにありますが、最初に、大幅な重複が予想される理由を尋ねます。次に、問題に対処するために多くの労力を費やす前に、アプリとデータセットに実際にどの程度の問題があるかについてのデータを収集します。

于 2010-12-30T20:07:43.890 に答える