加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[javaEE] response实现图片下载

发布时间:2021-05-21 06:43:25 所属栏目:大数据 来源: https://www.jb51.cc
导读:在 Servlet 中的 doGet() 方法中 获取 FileInputStream 对象, new 出来,构造参数: String 的文件路径 得到文件路径,调用 this.getServletContext().getRealPath( “这里是应用根路径”) 调用 HttpServletResponse 对象的 getOutputStream() 方法,得到 O

Servlet中的doGet()方法中

获取FileInputStream对象,new出来,构造参数:String的文件路径

得到文件路径,调用this.getServletContext().getRealPath(“这里是应用根路径”)

调用HttpServletResponse对象的getOutputStream()方法,得到OutputStream对象

正常读取和写入流

?

输入流可以关闭,输出流不要关闭

此时图片会直接显示出来,并没有出现下载

?

使用http协议头Content-Disposition:attachment;filename=1.jpg

调用HttpServletResponse对象的setHeader()方法,参数:keyvalue

?

此时问题,http协议头里不允许有中文,会出错,编码是iso8859-1

使用url编码方式解决,二进制转十六进制加上个%

调用UrlEncoder.encode()方法,进行url编码,参数:String文本,编码”utf-8”

        response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("测试.jpg","utf-8"));
        FileInputStream file=new FileInputStream(this.getServletContext().getRealPath("1.jpg"));
        OutputStream os=response.getOutputStream();
        
        byte[] b=new byte[1024];
        int len=0;
        while((len=file.read(b))!=-1){
            os.write(b,0,len);
        }
        file.close();

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读