Folgendes Problem: Ich habe ienen HTTPserver gebastelt. Der funktioniert soweit auch. Jetzt ist eine Problemstellung, das dieser Server auch statische Dateien übertragen soll, diese dann via HTTP-download auch zum Runterladen bereitstellt. Dies klappt auch wunderbar mit textdateien (test/plain, text/html, etc.), allerdings hat er mit gif, jpg, pdf, etc. ein Problem.
Wenn ich das richtig sehe, transportiert HTTP (Netzwerktechnik ist nicht mein Spezialgebiet
) im Content-Teil die Daten, sprich in diesem Fall den Inhalt der Datei, dieser muss also als String in den Content geschrieben werden (wie gesagt, Textdateien gehen einwandfrei!). Soweit ich das sehe, liegt es am Encoding der Datei. Ich habe schon den sun.misc.BASE64Encoder ausprobiert, aber der macht mir auch meine Text-Dateien kaputt. Bräuchte an dieser Stelle also ein wenig Hilfe.
Unten der relevante Quellcode.
Anmerkung: this.file ist die angeforderte Datei! weitere Attribute des Objektes hier sind lediglich HTTP-Header Informationen!
Wenn ich das richtig sehe, transportiert HTTP (Netzwerktechnik ist nicht mein Spezialgebiet
Unten der relevante Quellcode.
Java:
this.contentType = this.file.toURL().openConnection()
.getContentType() + "; charset=base64";
this.responseCode = 200;
this.additionalHttpHeaders.setProperty(
"Content-disposition",
"attachment; filename="+this.file.getName());
FileInputStream fis = new FileInputStream(this.file);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
int in = 0;
while ((in = fis.read()) >= 0) {
bo.write(in);
}
System.out.println(this.file.length());
System.out.println(bo.size());
bo.close();
fis.close();
this.content = bo.toString("ASCII"); //könnte auch ISO8859_1, usw. drin stehen, funktioniert nicht