springboot| 使用 response 做文件下载, 图片预览

本贴最后更新于 1776 天前,其中的信息可能已经渤澥桑田

javaDEMO

Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: java 技术大本营
java_subscribe

Response 做文件下载

在以前文章中,我们有讲过 controller 可以返回页面或者是 json 数据,文章参考:
https://www.javastudy.cloud/articles/2019/11/02/1572707309375.html
在实际开发中,我们经常有下载文件的需求,需要以下几步:

  1. 引入 web 依赖
  2. 编写相应的 controller
  3. 下载测试

引入 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();
        }
    }

结果测试

image.png

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();
        }
    }

结果输出

image.png

DEMO 总评

文件下载是常用的功能,掌握一个写法后,后面的扩展也就简单了,这里是文件下载的,通常还有类似的如图片预览(直接返回 InputStream)的等等,加油吧, 少年!!

DEMO 下载

springbootdownloadfile.zip

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...