Implementierung des voll funktionsfähigen Uploads von Medien in eine Webanwendung

Angenommen, wir haben die Webanwendung, die Artikel erstellt, liest, aktualisiert und löscht, und jeder Artikel sollte eine Bildergalerie haben. Ich muss eine eins zu eins Beziehung zwischen Artikel und Galerie und eine zu viele Beziehung zwischen Galerie und Medien herstellen.

HTML5 bietet viele Funktionen wie Multiupload, daher möchte ich diese Funktion hervorragend nutzenhttp://blueimp.github.io/jQuery-File-Upload/ Plugin dafür. Das Problem ist, wie man den Dateiupload "im Speicher" wie die Daten anderer Formulare behandelt.

Wenn wir zum Beispiel die Seite zum Erstellen eines neuen Artikels anzeigen, sollten wir in der Lage sein, die Datenfelder des Artikels auszufüllen und die hochzuladenden Bilder auszuwählen. Wenn wir dann auf die Schaltfläche Speichern klicken, sollten die Bilder mit dem Hochladen beginnen und anschließend das Formular senden. Wenn die Validierung fehlschlägt, sollten die Bilder weiterhin im Frontend angezeigt werden, aber auf der Serverseite sollte nothink gespeichert werden.

Eine der Lösungen besteht darin, vor dem Anzeigen des gesamten Formulars eine Art temporäre ID für die Entitätssitzung zu erstellen. Diese ID kann zum Erstellen eines temporären Verzeichnisses für das Speichern von Uploads verwendet werden. Nach dem erfolgreichen Speichern können diese Bilder jedoch in das entsprechende Verzeichnis verschoben werden mache ich die "create entity session temporary id"?

Die andere Lösung ist meiner Meinung nach der "mit der Bearbeitungs-ID" -Ansatz, da wir die Uploads mit der zuvor gespeicherten Galerie-ID verarbeiten können, aber manchmal kann ich keinen neuen leeren Artikel mit der Galerie speichern, da einige Felder nicht leer sein sollten in db.

Für die Rails habe ich gesehenhttps://github.com/thoughtbot/paperclip Juwel, das in der Readme sagt:

Die Büroklammer ist als einfache Dateianhangbibliothek für Active Record gedacht. Die Absicht dahinter war es, das Setup so einfach wie möglich zu halten und Dateien so weit wie möglich wie andere Attribute zu behandeln. Dies bedeutet, dass sie nicht an ihrem endgültigen Speicherort auf der Festplatte gespeichert oder gelöscht werden, wenn sie auf null gesetzt sind, bis ActiveRecord :: Base # save aufgerufen wird.

Meine Frage ist, wie es funktioniert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage