PDFドキュメントを生成して返すJavaサーブレット(3.x - Tomcat 8)がいくつかあります。私は決してそれらのどれにも問題がなかった。これはされている、Javaサーブレットがレスポンスバイトを書き込まない
response.reset();
response.setContentType("application/pdf");
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Disposition","attachment; filename=\""+filename+".pdf\"");
response.setContentLength(pdfBytes.length);
System.out.println("# Bytes => " + pdfBytes.length);
ServletOutputStream sos = response.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(sos);
bos.write(pdfBytes);
sos.flush();
sos.close();
私が言ったように:私は最近、また、PDFドキュメントを作成して返すために新しいサーブレットを書いて、他の人が使用しているとして、この新しいサーブレットは、応答コードのまったく同じ片を用いています他のものとうまく動作しますが、新しいサーブレットを呼び出すと、上記のprint文に0以外の値があっても0バイトが返されます。しかし
、私は上記の回答の書き込みコードを変更した場合:それはよく形成されたPDFドキュメントを返し、正常に動作します...
OutputStream os = response.getOutputStream();
os.write(pdfBytes);
os.flush();
os.close();
。なぜこれが起こっているのでしょうか?
べきではない 'sos.flush();' 'ことbos.flush( );など? – Thomas