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)的等等,加油吧, 少年!!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于