不是我写的.//文件下载的Servlet
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;public class downloadfile extends HttpServlet {
 private static final String CONTENT_TYPE = "text/html; charset=GBK";
 //Initialize global variables
 public void init() throws ServletException {
 }
 //Process the HTTP Post request
 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   response.setContentType(CONTENT_TYPE);   String pathsavefile;//要下载的文件
   String fileName;//保存窗口中显示的文件名
   fileName=response.encodeURL(new String(fileName.getBytes(),"ISO8859_1"));//转码   try
   {
      response.reset();
      response.setContentType("APPLICATION/OCTET-STREAM");
      response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
      ServletOutputStream out = response.getOutputStream();
      InputStream inStream=new FileInputStream(pathsavefile);
      //循环取出流中的数据
      byte[] b = new byte[1024];
      int len;
      while((len=inStream.read(b)) >0)
        out.write(b,0,len);
      }
      out.close();
      inStream.close();
    }
    catch (Exception e)
    {
      System.out.println(e);
    }
    
 }
 //Clean up resources
 public void destroy() {
 }
}

解决方案 »

  1.   

    你把上面的代码改成jsp不就行了?
    jsp也是servlet啊
      

  2.   

    <%@page import="java.io.*"%>
    <%
    String fileName = "F:/JavaProj/product.xml";
    java.io.FileInputStream fis = new java.io.FileInputStream( fileName );
    response.reset();
    response.setContentType("application/octet-stream");
    response.addHeader("Content-Disposition", "attachment; filename=product.xml");
    BufferedReader in = new BufferedReader(new InputStreamReader(fis));
    String inputLine;
    while ((inputLine = in.readLine()) != null)
    out.println(inputLine);
    in.close();
    %>