[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()方法,参数:key,value ? 此时问题,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(); ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |