[javaEE] response实现图片下载详解编程语言

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

[javaEE] response实现图片下载详解编程语言

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/industrynews/12698.html

(0)
上一篇 2021年7月19日 14:52
下一篇 2021年7月19日 14:52

相关推荐

发表回复

登录后才能评论