springboot返回视频流,springboot返回图片文件流
目录
如何通过流返回文件控制器类如下工具类下载实用程序如下以流的方式直接返回
如何通过流返回文件
本人的文件是放在资源/模板目录下,截图如下
controller类如下
@ get mapping(value=/downfile )公共空的下载(HttpServletResponse响应)抛出io异常{ String fileName=模板。xlsx ;//设置信息给客户端不解析string type=new MimetypesFileTypeMap().获取内容类型(文件名);//设置内容类型,即告诉客户端所发送的数据属于什么类型回应。set header( Content-type ,type);//设置编码字符串代码=新字符串(fileName.getBytes(utf-8 ), iso-8859-1 );//设置扩展头,当内容类型的类型为要下载的类型时,这个信息头会告诉浏览器这个文件的名字和类型回应。set header( Content-Disposition , attachment filename= code);回应。设置内容类型(‘应用程序/八位字节流;charset=iso 8859-1’);response.addHeader(Pargam , no-cache );回应。添加标头(“Cache-Control”、“no-Cache”);DownLoadUtils.download(文件名,响应);}
工具类DownLoadUtils如下
公共类download utils { public static void download(字符串文件名,HttpServletResponse res)抛出IOException { //发送给客户端的数据//读取文件名类路径资源类路径资源=新的类路径资源( templates/ filename);长长度=类路径资源。getfile().长度();res.addHeader(Content-Length ,string。(长度)的值;output stream输出流=RES . get输出流();字节[]缓冲区=新字节[1024];BufferedInputStream bis=nullInputStream InputStream=类路径资源。getinputstream();bis=new BufferedInputStream(inputStream);int I=bis。读(buff);而(我!=-1) { outputStream.write(buff,0,buff。长度);outputStream.flush().I=bis。读(buff);}之二。close();输出流。close();} }注意点
回应。添加标题(内容长度,字符串。(文件的值。length()));如果不加这句代码,下载下来的文件会在打开前提示修复,文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配
以流的方式直接返回
导入Java。io。filereader导入Java。io。inputstream导入Java。util。属性;/* */公共类reflect { public static void main(String[]args)引发异常{ //获取一个文件的绝对路径!//这种是先获得绝对路径然后在转换成流.字符串路径=线程。当前线程().getContextClassLoader()//.获取资源( class info 2。属性”).getPath();//FileReader reader=new FileReader(path);//下面这种是直接用流的方式返回InputStream读取器=线程。当前线程().getContextClassLoader().getResourceAsStream( class info 2。属性’);Properties pro=new Properties();专业负载(阅读器);读者。close();//通过键获取价值.string class name=pro。getproperty(“类名”);系统。出去。println(类名);}}以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它.
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。