我正在使用 Servlet,似乎无法弄清楚为什么我的下载文件 servlet 可以在本地工作,但不能在其他情况下工作



当我从本地主机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)

最新更新