通过JSF操作方法下载Excel文件会导致在前面添加一些奇怪的字符,并附加完整的JSP页面
我正在使用JSF,在一个托管bean(视图范围)中,我有一个方法:通过JSF操作方法下载Excel文件会导致在前面添加一些奇怪的字符,并附加完整的JSP页面,excel,jsf,download,Excel,Jsf,Download,我正在使用JSF,在一个托管bean(视图范围)中,我有一个方法: public String viewReport() { HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); response.setContentType("application/vnd.ms-ex
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/octetstream
我用一个纯文本文件尝试了同样的方法,我能够通过它打开它
请帮我解决这个问题,提前谢谢
上面有一些奇怪的字符
你需要事先准备好
response.reset();
另一个可能的原因是正在保存的文件本身已损坏。例如,使用写入程序
而不是输出流
保存
下面是JSP的完整代码 您需要这样做,以便它在调用action方法后不会执行其默认导航和呈现响应作业
context.responseComplete();
另见:
response.reset();
另一个可能的原因是正在保存的文件本身已损坏。例如,使用写入程序
而不是输出流
保存
下面是JSP的完整代码 您需要这样做,以便它在调用action方法后不会执行其默认导航和呈现响应作业
context.responseComplete();
另见: