2017-03-24 3 views
0

ファイルサイズが8k未満の場合、ファイル名は正しく表示されます。 8kを超えると表示できません。ファイルサフィックスを変更してファイルを開くと、データは完全に出力されます。java HttpServletResponse fileSize over 8k

response.reset(); 
OutputStream fileoutStream = response.getOutputStream(); 
hssfWorkbook.write(fileoutStream); 
String filename = new String(wbname.getBytes(), "ISO-8859-1"); 
resp.setContentType("application/vnd.ms-excel,charset=utf-8"); 
resp.addHeader("Content-Disposition", "attachment;filename=\""+filename+".xls\""); 

enter image description here

+2

この質問は密接に関連しています:http://stackoverflow.com/questions/13536596/setting-headers-on-httpservletresponse-after-writing-response-body –

答えて

2

を行うには、OutputStreamに書き込む前にヘッダを追加する必要があります。出力がバッファされているのでファイルが十分に小さいときに機能しますが、技術的にはバグだと思います。 HTTPプロトコルでは、すべてのヘッダーが最初にクライアントに送信され、次にペイロードが送信される必要があります。ペイロードの最初のバイトがソケットにフラッシュされると、戻ってヘッダーを追加することはできません。

+0

それは動作します!本当にありがとうございました! – Kovacs