RequestDispatcher dispatcher = application.getRequestDispatcher(filenamedownload);
这句话完全不对了。上面没问题。
应该是用response.getOutputStream()获得输出流,然后读入服务器文件流,输出到输出流就可以了。

解决方案 »

  1.   

    lz的代码是对应相对路径,是属于web发布目录下的文件,如果要能下载服务器非发布目录下的文件,
    要用io处理
    <%
      response.setContentType("application/x-download");//设置为下载application/x- download
      String filenamedownload = "E:\\upload\\annex1\\附件一.jpg";//即将下载的文件的相对路径
      String filenamedisplay = "帮助文档.jpg";//下载文件时显示的文件保存名称
      filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
      response.addHeader("Content-Disposition","attachment;filename=\"" + filenamedisplay);
    try
    {
    java.io.outputstream os = response.getoutputstream();
    java.io.fileinputstream fis = new java.io.fileinputstream(filenamedownload);byte[] b = new byte[1024];
    int i = 0;while ( (i = fis.read(b)) > 0 )
    {
    os.write(b, 0, i);
    }fis.close();
    os.flush();
    os.close();
    }
    catch ( exception e )
    {
    }
    %>