Ich habe ein Upload-Formular wie dieses ( form.gsp
):
Ich erwarte, dass der Benutzer ein Bild hochlädt, und wenn er auf die Schaltfläche upload
klickt, muss ich das Bild in meiner Controller-Aktion abrufen und an die Ansicht übergeben:
Dies wirft einen Fehler auf:
%Vor% Beachten Sie, dass diese Fotos nicht in meiner Datenbank gespeichert werden sollen. Sobald die Aktion upload
durchgeführt wurde, werde ich mit diesem Bild arbeiten und die Ausgabe in upload
view selbst anzeigen. Es wird also gut sein, wenn ich eine Lösung dafür habe.
Vielen Dank im Voraus.
Wenn Sie die Datei hochladen, nicht speichern und in einer anderen Ansicht in der nächsten Anfrage in <img>
anzeigen möchten, können Sie sie vorübergehend in der Sitzung speichern:
grails-app/controllers/UploadController.groovy:
grails-app/views/upload/form.gsp:
grails-app/views/upload/elsewhere.gsp:
Die Datei wird für eine einzelne Anfrage verfügbar sein (da wir sie entfernen, wenn sie angezeigt wird). Möglicherweise müssen Sie eine zusätzliche Sitzungsbereinigung für Fehlerfälle implementieren.
Sie können dies leicht an mehrere Dateien anpassen (wenn Sie mehrere Foto-Uploads durchführen möchten), aber denken Sie daran, dass jede Datei Speicherplatz belegt.
Eine Alternative zur Verwendung der Sitzung wäre, die Dateien mit MultipartFile#transferTo(File)
und von dort aus anzeigen.
Bearbeiten : Die getBytes wurden wie vorgeschlagen in Bytes geändert, und das ist ein besserer grooviger Weg:)
Tags und Links grails file-upload groovy