2010-12-28 12 views
0

Ich habe es mit Mongoid, carrierwave und gridFS zu tun, um meine Uploads zu speichern.MongoDB, Carrierwave, GridFS und Verhinderung der Duplizierung von Dateien

Zum Beispiel habe ich einen Modellartikel, der einen Datei-Upload (ein Bild) enthält.

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

Aber ich möchte nur einmal die Datei speichern, in dem Fall, wo ich viele Male die gleiche Datei für differents Artikel laden werden.

Ich sah GridFS hat eine MD5-Prüfsumme.

Was wäre der beste Weg, die Duplizierung von identischen Dateien zu verhindern?

EDIT: In der Tat, auf meiner Website könnten die Benutzer Dateien hochladen. Aber um zu vermeiden, mehrere identische Dateien zu speichern, möchte ich nur Verbindungen durch eine Zuordnungstabelle machen. Nichts Schwieriges, aber wie man das die unten angegebenen Bibliotheken macht. Wenn Sie eine Idee haben.

Dank

Antwort

0

Deduplizierung kann sehr wohl ein lohnendes Ziel auf Ihrer Anwendung abhängig sein, aber mein erster Instinkt, dieses Problem zu nähern würde es umdrehen - warum Sie eine Menge doppelter Uploads erwarten Sie? Können Sie diese Wahrscheinlichkeit reduzieren, so dass Benutzer keinen unnötigen Zeitaufwand für das Hochladen von Zeit aufwenden müssen und Sie keinen unnötigen Aufwand für die Überprüfung von Duplikaten aufwenden müssen?

Was ist, wenn Sie ein Asset Modell erstellen und den Uploader, dass anhängen, dann eine Articlereferences_one :asset, und Sie können Benutzer von bereits verfügbaren Vermögenswerte wählen, wenn ein neuer Artikel zu schaffen oder eine neue laden, wenn nötig?

Ich kann Ihre Anwendungsdomäne nicht verstehen, wenn Sie ein vereinfachtes Beispiel geben (bitte erläutern Sie weiter, wenn ja), und es ist sicherlich möglich, dass die Duplizierung immer noch ein echtes Problem sein könnte erwartet wird, und sammeln Sie als nächstes einige Daten über wie viel von einem Problem ist es wirklich in Ihrer App und Dataset, bevor Sie eine Menge Aufwand, um es anzugehen.

+0

Vielen Dank für Ihre Antwort. Ich werde meinen Beitrag bearbeiten – Arkan

Verwandte Themen