当前位置 博文首页 > jsp文件下载功能实现代码

    jsp文件下载功能实现代码

    作者:洛阳融科聂晨 时间:2021-08-28 19:01

    本文实例为大家分享了jsp实现文件下载功能的3种方法,供大家参考,具体内容如下

    第一种、采用转发的方式:

    package cn.jbit.download.servlet; 
     
    import java.io.IOException; 
     
    import javax.servlet.RequestDispatcher; 
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
     
    public class DownloadServlet extends HttpServlet { 
     
      private static final long serialVersionUID = 6765085208899952414L; 
     
      public void doGet(HttpServletRequest request, HttpServletResponse response) 
          throws ServletException, IOException { 
        doPost(request, response); 
      } 
     
      public void doPost(HttpServletRequest request, HttpServletResponse response) 
          throws ServletException, IOException { 
        String filedownload = "/upload/1/10213.jpg";//即将下载的文件的相对路径 
        String filedisplay = "10213.jpg";//下载文件时显示的文件保存名称 
        response.setContentType("application/x-download");//设置为下载application/x-download 
        //response.setContentType("application/x-msdownload");//设置为下载application/x-msdownload 
        //response.setContentType("application/octet-stream");//设置为下载application/octet-stream 
        response.addHeader("Content-Disposition", "attachment;filename=" 
            + filedisplay); 
         
        try { 
          RequestDispatcher rd = request.getRequestDispatcher(filedownload); 
          if(rd != null) 
          { 
            rd.forward(request,response); 
          } 
          response.flushBuffer(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
        } 
      } 
    } 
    

    二、通过输出流的方式:

    package cn.jbit.download.servlet; 
     
    import java.io.BufferedInputStream; 
    import java.io.BufferedOutputStream; 
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.OutputStream; 
     
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
     
    public class DownloadOfIOServlet extends HttpServlet { 
     public void doGet(HttpServletRequest request, HttpServletResponse response) 
          throws ServletException, IOException { 
        doPost(request, response); 
      } 
       
      public void doPost(HttpServletRequest request, HttpServletResponse response) 
          throws ServletException, IOException { 
        String basePath = request.getSession().getServletContext().getRealPath("/upload"); 
     
        String filedisplay = "helloworld.jpg"; 
        String filedownload = basePath + File.separator + "helloworld.jpg"; 
        response.setContentType("applicaiton/x-download"); 
        response.addHeader("Content-Disposition", "attachment;filename="+filedisplay); 
         
        InputStream is = null; 
        OutputStream os = null; 
        BufferedInputStream bis = null; 
        BufferedOutputStream bos = null; 
         
        is = new FileInputStream(new File(filedownload)); 
        bis = new BufferedInputStream(is); 
        os = response.getOutputStream(); 
        bos = new BufferedOutputStream(os); 
         
        byte[] b = new byte[1024]; 
        int len = 0; 
        while((len = bis.read(b)) != -1){ 
          bos.write(b,0,len); 
        } 
         
        bis.close(); 
        is.close(); 
        bos.close(); 
        os.close(); 
      } 
    } 
    
    
    

    第三种、通过超链接的方式(注意不推荐,因为会暴露下载文件的位置)

    jsjbwy
    下一篇:没有了