Im Pseudo / Quick-Code würde ich so vorgehen. In einem benutzerdefinierten Modul ...
Erstellen Sie eine Tabelle in der Datenbank mit zwei Spalten, fid und md5.
Überprüfen Sie jedes Mal, wenn Sie eine Datei erstellen, ob sich md5 () von allem, was Sie für einzigartig halten, in dieser Datenbank befindet, z.
ein. Wählen Sie fid aus TABELLE aus, wobei md5 = ab3783ea6c83bcd9383eef778
b. Wenn fid dann oops, scheint es bereits Datei bla bla bla zu geben
c. Andernfalls
Speichern Sie die fid und md5 () dieser Datei in dieser Tabelle.
Sie können all diese Logik in den Validierungs-Hook einfügen, wenn Sie den Bildinhalt erstellen. Sie können sogar Rollen einrichten, die diese überschreiben können usw.
Nun zum md5 () der Dinge.
Der Dateiname kann leicht geändert werden, und ich glaube, er wird sowieso nicht wirklich an Drupal gesendet - sondern nachträglich dort erstellt. Wollen Sie ihn also wirklich verwenden?
Der Inhalt der Datei könnte ein besserer Ansatz sein.
MD5 könnte also mit einer schnellen md5_file (PATHTOFILE) gefüllt werden.
Angenommen, Sie möchten die Möglichkeit haben, dieses System systemweit oder pro Benutzer auszuführen. Sie möchten beispielsweise nicht, dass ein Benutzer mehrere Kopien eines Bildes hochlädt oder dass nur ein genaues Bild systemweit hochgeladen wird.
Fügen Sie der obigen Tabelle einfach eine weitere Spalten-UID hinzu und überprüfen Sie diese ebenfalls, z.
Wählen Sie fid aus TABLE aus, wobei md5 = ... und uid = $ user-> uid
Wie auch immer, dies sind nur meine kurzen Gedanken nach dem ersten Espresso am Morgen hier in D6land. Vielleicht hat D7 schon etwas davon eingebaut und ich erfinde das Rad wieder neu :)
Hierfür gibt es jetzt ein Modul, das File Hash- Modul. Vielen Dank an Jimajamma für die Darstellung seines Ansatzes, mit dem ich dieses Modul über Google finden konnte.
Wie in diesem Thread gezeigt , kann das Modul derzeit verwendet werden, um doppelte Datei-Uploads global zu deaktivieren.
quelle
Ich denke, Sie müssen ein benutzerdefiniertes Modul schreiben, um dies zu erreichen. Ich habe das schon in kleinen Stücken gemacht. Verwenden Sie ein Formular ändern und sehen Sie für die Felder. Dabei erhalten Sie den Namen und die Größe der Datei, sicher, dass eine Variable diese beiden erhalten hätte.
Versuchen Sie nun, ein if () zu verwenden und prüfen Sie, ob (! Isset ($ field ['name']) &&! Isset ($ field ['size'])). Und basierend darauf setzen Sie die Fehlermeldung im Formular.
Hoffe es hilft dir.
quelle