Konvertiere Base64-Byte-Array in ein Bild

8

Ich habe eine Form-Bean mit den Attributen id, desc und imageByteArray. Die Struts-Aktion wird ausgeführt und es wird zu einer JSP umgeleitet, wo ich auf diese Bean-Attribute wie id, desc zugreifen und das imageByteArray konvertieren und als Bild anzeigen möchte. Ich habe das versucht posten , aber das funktioniert nicht für mich.

Ich kodiere das Bytearray mit Base64 - wobei this.bean.imageByteArray auf die Form bean verweist

%Vor%

Ich habe das versucht, aber nicht funktioniert

%Vor%

Byte-Array (byte [] imageByteArray) verweist auf ein Base64-kodiertes JPG-Bild und ich erhalte das folgende img-Tag als Ausgabe und offensichtlich wird nichts angezeigt,

%Vor%

Irgendeine Idee, wie man base64 Bytearray umwandelt und als Bild in JSP anzeigt?

    
SyAu 09.05.2012, 05:40
quelle

2 Antworten

11

Was Sie erhalten, ist nur die toString-Ausgabe eines Arrays. Sie müssen jedoch das Byte-Array in einen String umgewandelt haben.

Sie sollten eine Methode in Bean erstellen

%Vor%

und referenzieren Sie dies in Ihrer JSP.

Während Sie technisch festlegen sollten, welche Kodierung für ein Array von base64 Bytes verwendet werden soll, ist dies nicht notwendig, da alle Zeichen im Standard 7bit ASCII Bereich liegen.

    
DoubleMalt 09.05.2012, 06:08
quelle
3

Die Antwort von DoubleMalt (die zum Zeitpunkt des Schreibens angenommen wurde) ist bedauerlich, weil es zwei Arten von Unrecht benutzt, um ein Recht zu bekommen. Es hilft nicht, dass Apache Commons Codec es so einfach macht, das Falsche zu tun: (

Base64 ist im Grunde eine Kodierung von binären Daten zu Text - als solche sollte es fast immer verwendet werden, um ein byte[] in ein String zu konvertieren. Ihr Problem besteht darin, dass Sie eine byte[] in eine andere byte[] konvertieren - aber Sie möchten diese Daten später als Zeichenfolge verwenden. Es wäre besser, einmal auf die richtige Weise zu konvertieren.

Jetzt können Sie genau wählen, wann Sie in base64 (und eine Zeichenkette) konvertieren. Du könntest es früh in deinem Java-Code tun, in diesem Fall würde ich verwenden:

%Vor% %Vor%

Alternativ können Sie nur die Binärdaten in Ihrer Bean speichern und die Codierung in der JSP durchführen. Es ist lange her, seit ich irgendwelche JSPs geschrieben habe, also werde ich nicht versuchen, den Code dafür hier zu schreiben.

Grundsätzlich müssen Sie jedoch entscheiden, ob Ihre Bean die ursprünglichen Binärdaten als byte[] oder die base64-codierten Daten als String beibehalten soll. Alles andere ist irreführend, IMO.

    
Jon Skeet 06.08.2015 07:16
quelle

Tags und Links