我想添加一个函数到我的web应用程序,它可以让用户下载一个excel文件。Java HttpServlet如何下载excel文件
我想用下面的代码来实现这一目标:
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
File file = new File("d:/test/test.xls");
response.setContentType("application/xls");
response.addHeader("Content-Disposition", "attachment; filename=test.xls");
response.setContentLength((int) file.length());
try {
FileInputStream fileInputStream = new FileInputStream(file);
OutputStream responseOutputStream = response.getOutputStream();
int bytes;
while ((bytes = fileInputStream.read()) != -1) {
responseOutputStream.write(bytes);
}
fileInputStream.close();
responseOutputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我能下载Excel与上面的代码文件,但该文件已损坏。如果我用microsoft excel打开它,我会弹出消息:
“文件格式和扩展名不匹配,文件可能已损坏或不安全”。
而excel文件是空的。
运行代码后,原始文件(d:/test/test.xls)也被破坏。
我在做什么错?
确定的Excel文件attemting下载它之前是否有效?它可能是它的过程之前已经损坏了吗? – icza 2014-10-28 14:58:11
是的,我很确定。 – MeesterPatat 2014-10-28 14:58:28
那么,有一件事是肯定的,您发布的代码肯定不会修改或损坏您的Excel文件。 – icza 2014-10-28 15:00:05