BASE64 encoding von Binärdaten

chris80

Mitglied
Hallo zusammen,

habe hier schon im Forum einen Beitrag gefunden der in etwa das Problem beschreibt was ich habe, dennoch kann ich mit der angeblichen Lösung dort nichts anfangen.

Hintergrund: Ziel ist es ein JPG-File BASE64 zu kodieren um es danach per email als Attachment übertragen zu können.

Die BASE64 codierung macht jetzt das Problem. Die Ergebniss-File ist genau so groß wie die Quell-Datei, trotzdem kann diese nicht angeziegt werden.

Was mache ich falsch?
Vielleicht kann mir jemand helfen.. wäre sehr nett.

Hier mein Code:
Java:
java.io.File file=new java.io.File("c:/audio.jpg");
java.io.FileInputStream stream = new java.io.FileInputStream(file);
java.io.DataInputStream in = new java.io.DataInputStream(stream);

int numberBytes = stream.available();
byte bytes[] = new byte[numberBytes];

String bla = new sun.misc.BASE64Encoder().encode(bytes);
out.println(bla);

stream.close();
 
Hintergrund: Ziel ist es ein JPG-File BASE64 zu kodieren um es danach per email als Attachment übertragen zu können.

Na wenn du das Bild Base64 encodierst, dann kannst du das wunderbar per Mail versenden. Aber irgendwie muss dieses wieder decodiert werden.

Des Weiteren kann ich mir fast nicht vorstellen, dass die encodierte Version gleich gross ist wie die binäre...
 
Außerdem würde ich mich nicht darauf verlassen dass FileInputStream#available() die größe der Datei liefert, nutz lieber die übliche Schleife und zum Speichern der Bytes eine ByteArrayOutputStream.
Ebenso würde ich keine Klassen aus sun.misc verweden. Apache-Codecs hat sicherlich auch einen Base64-En/Decoder.
 
Ein weiterer Hintergrund ist das der JavaCode in einer *isml-datei steht (InterShop Markup Language, eine Art html-datei) Das Produkt was ich dabei verwende ist enfinity, ist sehr speziell kennt vllt. nicht jeder, jedenfalls kann ich da java-Code einbauen und mit dem Befehl
Code:
out.println(bla)
;
wird schon in die Datei geschrieben.

Aber irgendwie muss dieses wieder decodiert werden.
Die Frage ist wann ich mit dem Decodieren beginnen soll, ich codiere das ganze zeug, dann schick ich das mit
out.print(bla) weg und schon hab ich ein attachment generiert (die erforderlichen Content-type Angaben vorausgesezt.).
wann soll ich also decodieren?

Des Weiteren kann ich mir fast nicht vorstellen, dass die encodierte Version gleich gross ist wie die binäre...
Ohne Witz die Quelle ist genauso groß Wie das Ziel das stimmt bis aufs letzte Byte genau.
 

Zurück
Oben