zoukankan      html  css  js  c++  java
  • 使用Servlet实现图片下载

    package chensi.com;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.net.URLEncoder;
    import java.nio.file.FileAlreadyExistsException;
    
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet HttpServletResponse 下载文件  ,浏览器提示我们将图片下载下来。
     */
    @WebServlet("/ResponseDemo7")
    public class ResponseDemo7 extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //通过路径将图片以流的形式得到
            //通过相对路径得到绝对路径
            String path = this.getServletContext().getRealPath("/WEB-INF/classes/爪哇.jpg");
            //有了路径可以得到输入流(图片,要用字节输出流)
            FileInputStream fis = new FileInputStream(path); //使用绝对路径将图片用输入流变成一个流  fis(图片)
            //用response创建一个输出流
            ServletOutputStream outputStream = response.getOutputStream();    
            
            /*我们要将图片下载下来 */
            //得到要下载的文件名
            String fileName = path.substring(path.lastIndexOf("\")+1);
            System.out.println(fileName);
            //设置文件的编码
            fileName = URLEncoder.encode(fileName,"UTF-8");
            //告知客户端要下载文件
            response.setHeader("content-disposition", "attachment;filename="+fileName);
            response.setHeader("content-type", "image/jpeg");
            
            //执行fileOutputStream的输出操作
            int len = 1;
            byte[] b = new byte[1024];
            while((len=fis.read(b))!=-1){
                outputStream.write(b, 0, len);
            }
            outputStream.close();
            fis.close();
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }
  • 相关阅读:
    vue-cli项目中使用vw——相比flexible更原生的移动端解决方案
    android shap画圆(空心圆、实心圆)
    Android四大组件——Activity跳转动画、淡出淡入、滑出滑入、自定义退出进入
    HDU 3980 Paint Chain (sg函数)
    HDU 3951 Coin Game (简单博弈)
    HDU 1850 Being a Good Boy in Spring Festival (Nim博弈)
    HDU 3389 Game (阶梯博弈)
    HDU 3032 Nim or not Nim? (sg函数)
    HDU 1907 John (Nim博弈)
    HDU 4638 Group (线段树 | 树状数组 + 离线处理)
  • 原文地址:https://www.cnblogs.com/zhanghaoliang/p/5619486.html
Copyright © 2011-2022 走看看