【发布时间】:2014-10-28 14:53:33
【问题描述】:
我正在尝试向我的网络应用程序添加一个功能,让用户可以下载 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文件有效吗?会不会在处理之前就已经损坏了?
-
是的,我很确定。
-
好吧,可以肯定的是,您发布的代码肯定不会修改或损坏您的 Excel 文件。
-
您的文件大小是多少?会不会很大?
-
为什么不将文件作为块而不是按字节读取?类似this.
标签: java excel http servlets download