当我从本地主机dl时,它工作正常。当我把代码放到网上时,它不起作用。我收到一个空指针异常。该文件肯定位于 Web 内容文件夹的"文件"文件夹中。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(".pdf");
response.setHeader("Content-disposition","attachment; filename=Web_Resume.pdf");
File myresume = new File(getServletContext().getRealPath("/Files/Web_Resume.pdf"));
OutputStream out = response.getOutputStream();
FileInputStream in = new FileInputStream(myresume);
byte[] buffer = new byte[4096];
int length;
while ((length = in.read(buffer)) > 0){
out.write(buffer, 0, length);
}
in.close();
out.flush();
}
如果它被部署为在线存档(.war 文件,而不是在本地文件系统上爆炸),那么根据 JavaDoc for ServletContext,getRealPath(...) 可能会返回 null,这将导致 File 构造函数中的 NullPointerException - 参见 http://docs.oracle.com/javaee/5/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)