Wie bekomme ich Bytes (byte []) von einer hochgeladenen Datei in Grails

7

Ich habe ein Upload-Formular wie dieses ( form.gsp ):

%Vor%

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:

%Vor%

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.

    
Ant's 24.01.2012, 08:37
quelle

3 Antworten

9

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:

%Vor%

grails-app/views/upload/form.gsp:

%Vor%

grails-app/views/upload/elsewhere.gsp:

%Vor%

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.

    
Rob Hruska 24.01.2012, 17:19
quelle
10
%Vor%

Bearbeiten : Die getBytes wurden wie vorgeschlagen in Bytes geändert, und das ist ein besserer grooviger Weg:)

    
Jan Wikholm 24.01.2012 09:13
quelle
5
%Vor%

und wenn Sie als Bild zurückkehren möchten:

%Vor%     
fixitagain 24.01.2012 13:04
quelle

Tags und Links