springboot返回文件的两种方式
程序员文章站
2022-05-04 19:24:39
第一种,写入流里返回@RequestMapping(value = "/getVideo", method = RequestMethod.GET) public void getVido(HttpServletResponse response) { String file = "C:\\Users\\Boss\\Desktop\\123.avi"; try { FileInputStream inputStream = new FileI...
第一种,写入流里返回
@RequestMapping(value = "/getVideo", method = RequestMethod.GET)
public void getVido(HttpServletResponse response) {
String file = "C:\\Users\\Boss\\Desktop\\123.avi";
try {
FileInputStream inputStream = new FileInputStream(file);
byte[] data = new byte[inputStream.available()];
inputStream.read(data);
String diskfilename = "final.avi";
response.setContentType("video/avi");
response.setHeader("Content-Disposition", "attachment; filename=\"" + diskfilename + "\"");
System.out.println("data.length " + data.length);
response.setContentLength(data.length);
response.setHeader("Content-Range", "" + Integer.valueOf(data.length - 1));
response.setHeader("Accept-Ranges", "bytes");
response.setHeader("Etag", "W/\"9767057-1323779115364\"");
OutputStream os = response.getOutputStream();
os.write(data);
//先声明的流后关掉!
os.flush();
os.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
第二种,用 @GetMapping注解 指定返回格式
@GetMapping(value = "getMusic/{musicid}", produces = "audio/mp3")
public byte[] getMusic(@PathVariable String musicid) {
log.info("请求接口 /story/Book/getBook/ 参数:{}", JSON.toJSONString(musicid));
MusicFile musicFile = null;
try {
musicFile = mongodbMapper.selectMusicByName(musicid);
} catch (Exception e) {
e.printStackTrace();
}
return musicFile.getContent().getData();
}
produces的类型可以在下面的网址查看:
https://tool.oschina.net/commons
本文地址:https://blog.csdn.net/qq_43578385/article/details/110168757
下一篇: 递归回溯算法一文读懂详解图文
推荐阅读
-
mysql 通过拷贝数据文件的方式进行数据库迁移实例
-
springboot 注册服务注册中心(zk)的两种方式详解
-
Win7打开文件提示快捷方式存在问题的解决方法
-
如何解决springboot读取配置文件的中文乱码问题
-
SpringMVC返回图片的几种方式(小结)
-
JavaBean实现多文件上传的两种方法
-
iOS 11 使用两种方法替换(Method Swizzling)去掉导航栏返回按钮的文字
-
SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用
-
SQLServer中数据库文件的存放方式,文件和文件组
-
详解将Eclipse代码导入到AndroidStudio的两种方式