我想添加一個函數到我的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