単純なHTTP Javaサーバーを一から作成しようとしています。 現在、私のブラウザにPC上の.jpgファイルをダウンロードさせようとしています。 その理由は です。fo image/jpeg
はメソッドにハードコードされています。次に、ブラウザにHTTP応答を出力する方法を示します。 desiredFile
「Image.jpg」という.jpgファイルがコンピュータに保存されています。HTTP経由で送信した後にJPEGが破損しました
すべてがうまく動作し、私のbroserはファイルをダウンロードしますが、開くことはできません。 Windows Image Programは、「おそらく破損している」と私に伝えています。イメージの詳細を見ると、バイトサイズは同じですが、解像度などの詳細は失われています。 `
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.");
`
バイトを送信する方法に問題がありますか?送信bytes
全体の配列として、私は他のすべてのバイトを送信している理由は動作しませんでした。
ありがとうございます!
'' Content-Disposition:attachment; filename = Imae.jpg "+" \ r \ n "'これはタイプミスですか?あなたは 'Image.jpg'を意味しますか? – Ishnark
"output"がどのように宣言され開かれているかを表示してください – Joni
あなたはバイトを読み込むために 'InputStreamReader'を使用していますか? – harshavmb