Hi,
zum Transport von Binärfiles über das Netzwerk verwende ich die Base64-Implementierung von apacha, also das paket
org/apache/commons/codec.
Das klappt aber leider nicht....
Folgendes Szenario:
- ich lese und konvertiere eine pdf-Datei mit:
Setze also in einer meiner Klassen das Feld sourceFileContent.
- Nun werden alle Felder dieser Klasse in ein xml-Dokument geschrieben.
Schaue ich mir nun den Inhalt dieses Feldes an, so sehe ich z.b.
usw....
- nun versuche den base64-kodierten String wieder zu decoden und das ursprüngliche Dokument wieder hierzustellen mit:
Nun wird die entsprechende pdf-Datei wieder angelegt, möchte ich sie aber jetzt mit dem acrobat reader öffnen, erhalte ich als Meldung:
Irgendwas muss da schiefgelaufen sein, nur schaue ich mir meinen Code an, sieht das für mich ganz ok aus.......
Hab ich irgendwas bei der Umwandlung nicht beachtet?
Nachtrag:
Es spielt übrigens keine Rolle, ob ich die Methode decodeBase64 nehme oder einfach nur decode, das Ergebnis ist das Gleiche.
zum Transport von Binärfiles über das Netzwerk verwende ich die Base64-Implementierung von apacha, also das paket
org/apache/commons/codec.
Das klappt aber leider nicht....
Folgendes Szenario:
- ich lese und konvertiere eine pdf-Datei mit:
Code:
public void setAndEncodeSourceFileContent(String sourceFileName) {
BufferedReader bufferedReader = null;
StringBuffer fileContent = new StringBuffer();
String line = null;
try {
bufferedReader = new BufferedReader(new FileReader(sourceFileName));
while((line = bufferedReader.readLine()) != null) {
fileContent.append(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
this.sourceFileContent = new String(
Base64.encodeBase64(
fileContent
.toString()
.getBytes()));
}
Setze also in einer meiner Klassen das Feld sourceFileContent.
- Nun werden alle Felder dieser Klasse in ein xml-Dokument geschrieben.
Schaue ich mir nun den Inhalt dieses Feldes an, so sehe ich z.b.
Code:
JVBERi0xLjMl5OPP0jEgMCBvYmo8PC9UeXBlL1BhZ2VzL0NvdW50IDQvS2lkc1sgNCAwIFIgMTAgMCBSIDE2IDAgUiAyMiAwI
usw....
- nun versuche den base64-kodierten String wieder zu decoden und das ursprüngliche Dokument wieder hierzustellen mit:
Code:
public void decodeSourceFileContentAndWrite2File(String path) {
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter(path + "\\" + this.sourceFileName, false);
fileWriter.write(new String(Base64.decodeBase64(sourceFileContent.getBytes())));
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Nun wird die entsprechende pdf-Datei wieder angelegt, möchte ich sie aber jetzt mit dem acrobat reader öffnen, erhalte ich als Meldung:
Code:
Beim Öffnen dieses Dokuments ist ein Fehler aufgetreten. Diese Datei ist beschädigt und kann nicht repariert werden.
Irgendwas muss da schiefgelaufen sein, nur schaue ich mir meinen Code an, sieht das für mich ganz ok aus.......
Hab ich irgendwas bei der Umwandlung nicht beachtet?
Nachtrag:
Es spielt übrigens keine Rolle, ob ich die Methode decodeBase64 nehme oder einfach nur decode, das Ergebnis ist das Gleiche.