javaDEMO
Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: java 技术大本营
Response 做文件下载
在以前文章中,我们有讲过 controller 可以返回页面或者是 json 数据,文章参考:
https://www.javastudy.cloud/articles/2019/11/02/1572707309375.html
在实际开发中,我们经常有下载文件的需求,需要以下几步:
- 引入 web 依赖
- 编写相应的 controller
- 下载测试
引入 web 依赖
只用引 web 的就可以了:
implementation 'org.springframework.boot:spring-boot-starter-web'
编写相应的 Controller
@RequestMapping("test/testDownload")
@ResponseBody
public void testDownload(HttpServletResponse response){
File fileBase = new File("test.txt");
try {
ServletOutputStream outputStream = response.getOutputStream();
FileInputStream inputStream = new FileInputStream(fileBase);
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode("这里写用户下载时的文件名.txt", "UTF-8"));
//注意, jdk8中还没有这个方法,使用jdk8的小伙伴要自己想办法复制流
inputStream.transferTo(outputStream);
outputStream.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
结果测试
Response 做图片预览
基于上面加一个 Controller 方法.代码如下:
@RequestMapping("test/showImage")
@ResponseBody
public void showImage(HttpServletResponse response){
File fileBase = new File("image.jpg");
try {
ServletOutputStream outputStream = response.getOutputStream();
FileInputStream inputStream = new FileInputStream(fileBase);
//注意, jdk8中还没有这个方法,使用jdk8的小伙伴要自己想办法复制流
inputStream.transferTo(outputStream);
outputStream.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
结果输出
DEMO 总评
文件下载是常用的功能,掌握一个写法后,后面的扩展也就简单了,这里是文件下载的,通常还有类似的如图片预览(直接返回 InputStream)的等等,加油吧, 少年!!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于