zoukankan      html  css  js  c++  java
  • 关于jsp中的文件下载

    第一种采用转发的方式:

    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();  
        }  
    }  

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

  • 相关阅读:
    pycharm pip 源修改以及包管理(转载)
    zabbix在执行docker命令是报错
    ubuntu 14.04zabbix的安装
    docker搭建zabbix
    docker的安装
    docker registry v2与harbor的搭建
    docker常用命令
    centos安装桌面,下面的几个包缺一不可
    MSSQL数据库高版本迁移到低版本
    .NET开源MSSQL、Redis监控产品Opserver之Exception配置
  • 原文地址:https://www.cnblogs.com/niechen/p/7685709.html
Copyright © 2011-2022 走看看