我正在使用 JSF,并且在其中一个托管 bean(视图范围)中,我有一个方法:
public String viewReport() {
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment;filename=book1.xls");
try {
File file = new File("C:\\soheb\\book1.xls");
FileInputStream fileIn = new FileInputStream(file);
ServletOutputStream out = response.getOutputStream();
byte[] outputByte = new byte[4096];
//copy binary contect to output stream
while(fileIn.read(outputByte, 0, 4096) != -1)
{
out.write(outputByte, 0, 4096);
}
fileIn.close();
out.flush();
out.close();
}
catch(IOException e) {
e.printStackTrace();
}
return null;
}
正在检索的 excel 文件已损坏。上面有一些奇怪的字符,下面是整个JSP代码。我什至也尝试了 contenttype 的 application/octet-stream。
我对纯文本文件进行了同样的尝试,并且能够通过它打开它。
请帮我解决这个问题,在此先感谢。