Ich versuche, einen einfachen HTTP-Java-Server von Grund auf neu zu erstellen. Im Moment versuche ich, meinen Browser dazu zu bringen, eine .jpg-Datei auf meinen PC zu laden, deshalb Die fo image/jpeg
ist hardcoded in die Methode. Die folgende Methode druckt die HTTP-Antwort auf meinen Browser. desiredFile
a .jpg Datei namens "Image.jpg" auf meinem Computer gespeichert.JPEG beschädigt nach dem Senden über HTTP
Alles funktioniert gut und mein broser lädt die Datei herunter, aber ich kann sie nicht öffnen. Das Windows Image-Programm sagt mir, dass es "wahrscheinlich beschädigt" ist. Wenn ich die Details des Bildes sehe, kann ich sehen, dass es dieselbe Byte-Größe hat, aber Details wie die Auflösung gehen verloren. `
byte[] bytes = Files.readAllBytes(desiredFile.toPath());
System.out.println("Attempting to print to client|" + bytes.length
output.write("HTTP/1.1 200 OK" + "\r\n"
+ "Content-type: image/jpeg" + "\r\n"
+ "Content-length: " + bytes.length + "\r\n"
+ "Content-Disposition: attachment; filename=Imae.jpg" + "\r\n"
+ "\r\n");
for (byte currentByte : bytes)
output.write(currentByte);
output.flush();
output.close();
System.out.println("Printing finished.");
`
Ist etwas falsch mit der Art, wie ich die Bytes übertrage? Senden von bytes
als ganzes Array hat nicht funktioniert, deshalb sende ich jedes Byte nach dem anderen.
Danke!
'" Content-Disposition: Anhang; Dateiname = Imae.jpg "+" \ r \ n "' Ist das ein Tippfehler? Meinst du "Image.jpg"? – Ishnark
Bitte zeigen Sie, wie "Ausgabe" deklariert und geöffnet wird – Joni
Verwenden Sie 'InputStreamReader' durch irgendeine Chance, die Bytes zu lesen? – harshavmb