SpringBoot的文件上传&下载

前言:不多BB直接上代码

文件上传

pom依赖添加commons-io

<!-- 上传/下载jar https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupid>commons-io</groupid>
    <artifactid>commons-io</artifactid>
    <version>2.4</version>
</dependency>

java代码:

/**
 * &#x4E0A;&#x4F20;&#x4F7F;&#x7528;PostMapping&#x4E86;, url&#x5E26;&#x4E86;&#x4E00;&#x4E2A;id&#x548C;&#x5B50;&#x8D44;&#x6E90;photos
    consumes: &#x6D88;&#x8017;&#x3001;&#x6D88;&#x8D39;
    &#x8868;&#x793A;&#x6307;&#x5B9A;Request&#x9644;&#x5E26;&#x7684;&#x6570;&#x636E;&#x4E3A;MULTIPART_FORM_DATA&#x5F62;&#x5F0F;(&#x6587;&#x4EF6;&#x4E0A;&#x4F20;&#x5C31;&#x662F;&#x8FD9;&#x6837;&#x7684;)
 * @param id &#x8868;&#x793A;&#x6211;&#x8981;&#x7ED9;&#x67D0;&#x4E2A;id&#x7684;&#x67D0;&#x79CD;&#x8D44;&#x6E90;&#x4E0A;&#x4F20;&#x56FE;&#x7247;
 * @param imgFile &#x56FE;&#x7247;&#x672C;&#x8EAB;
 * @throws Exception
 */
@PostMapping(value = "/{id}/photos", consumes=MediaType.MULTIPART_FORM_DATA_VALUE)
public void addPhoto(@PathVariable int id, @RequestParam("photo")MultipartFile imgFile) throws Exception{
    log.info("&#x63A5;&#x6536;&#x5230;&#x6587;&#x4EF6; " + id + "&#x6536;&#x5230;&#x6587;&#x4EF6;: " + imgFile.getOriginalFilename());
    // &#x4FDD;&#x5B58;&#x6587;&#x4EF6;
    FileOutputStream fos = new FileOutputStream("target/" + imgFile.getOriginalFilename());
    IOUtils.copy(imgFile.getInputStream(), fos);
    fos.close();
}

测试:

SpringBoot的文件上传&下载

Send后PostMan没有回执,但控制台给了打印信息

SpringBoot的文件上传&下载

打开对应上传目录后, 发现文件已经上传成功

SpringBoot的文件上传&下载

文件下载

java代码:

/**
 * &#x4E0B;&#x8F7D;&#x4F7F;&#x7528;GetMapping
 * produces: &#x6307;&#x5B9A;&#x8F93;&#x51FA;&#x683C;&#x5F0F;&#x4E3A;GIF&#x56FE;&#x7247;(&#x4F60;&#x4EEC;&#x4E5F;&#x53EF;&#x4EE5;&#x81EA;&#x5DF1;&#x6539;&#x5566;)
 * @param id &#x8868;&#x793A;&#x6211;&#x8981;&#x53D6;&#x67D0;id&#x4E0B;&#x7684;&#x67D0;&#x4E2A;&#x8D44;&#x6E90;
 * @return
 * @throws Exception
 */
@GetMapping(value = "/{id}/icon", produces=MediaType.IMAGE_GIF_VALUE)
public byte[] getIcon(@PathVariable int id) throws Exception{
    log.info("getIcon( " + id + " )");
    // &#x53D6;&#x6B64;&#x8DEF;&#x5F84;&#x4E0B;&#x7684;icon.gif&#x6587;&#x4EF6;
    String iconFile = "src/test/resources/icon.gif";
    InputStream is = new FileInputStream(iconFile);
    return IOUtils.toByteArray(is);
}

就直接用PostMan测试了(用浏览器结果也一样,我试过啦,就不截图了)

SpringBoot的文件上传&下载

Original: https://www.cnblogs.com/zilongmao/p/10264977.html
Author: 无尽函数
Title: SpringBoot的文件上传&下载

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610080/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 什么是视频编码?编解码器和压缩技术

    想知道什么是视频编码,为什么它很重要? 在本文中,我们将研究编码、编解码器和压缩技术的过程。这包括什么使得一个推荐的编解码器,虽然是取决于情况。它还涵盖了为什么某些伪影,与压缩有关…

    Linux 2023年6月7日
    0114
  • 在cmd中使用doskey来实现alias别名功能

    作为一枚网络工程师,经常就是面对一堆黑框框,也是就是终端。不同操作系统、不同厂家的目录,功能相同但是键入的命令又大不相同,这些差异化容易让脑子混乱。比如华为、思科、H3C、锐捷的设…

    Linux 2023年6月6日
    088
  • Linux驱动编程1——内核编译

    1.安装必要的内核开发包,包括gcc、make、libncurses-dev。 $ apt-get install gcc make libncurses-dev 2.$ make…

    Linux 2023年6月8日
    097
  • redis安装使用

    Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务…

    Linux 2023年5月28日
    097
  • rocketmq高可用集群部署(RocketMQ-on-DLedger Group)

    编辑broker的配置文件 第一台主机node0的配置(192.168.0.218): vim ./conf/dledger/broker-n0.conf 内容如下: broker…

    Linux 2023年6月8日
    0104
  • 开发环境的搭建

    ​ 一:ubuntu14.04 LTS开发环境搭建 1.1、参考博客 参考的教程如下: ubuntu老版本下载地址 VMware下Ubuntu Server 14.04安装教程(最…

    Linux 2023年6月13日
    088
  • samba服务设置与访问共享文件夹

    samba服务设置与访问共享文件夹 linux设置文件夹共享 windows连接共享文件夹(运行->//IP/route) linux连接共享文件夹 1、基本服务安装与配置 …

    Linux 2023年6月14日
    090
  • mysql update语句的执行流程是怎样的

    update更新语句流程是怎么样的 update更新语句基本流程也会查询select流程一样,都会走一遍。 update涉及更新数据,会对行加dml写锁,这个DML读锁是互斥的。其…

    Linux 2023年6月8日
    098
  • 零成本搭建个人博客之迁移Pages和域名

    在上文[零成本搭建个人博客之搭建篇]中,我将Hugo博客搭建到 Github Page上,后来考虑到用 Cloudflare cdn加速,干脆就把博客站点迁移到Cloudflare…

    Linux 2023年6月7日
    087
  • LVM逻辑卷与磁盘配额

    一、LVM逻辑卷 1、LVM概述 LVM(Logical Volume Manager,逻辑卷管理)重点在于可以弹性地调整文件系统的容量,需要文件的读写性能或是数据的可靠性,LVM…

    Linux 2023年6月6日
    0106
  • 虚拟机无法联网

    状态:虚拟机使用NAT模式的VMnet8网卡, ping baidu.com 无法联通 解决: ipconfig查看物理机网络: ip配置:把网关 GATEWAY 改为 192.1…

    Linux 2023年6月8日
    088
  • jQuery 遍历

    下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行…

    Linux 2023年6月13日
    088
  • Netty源码解读(四)-读写数据

    读写Channel(READ)的创建和注册 在NioEventLoop#run中提到,当有IO事件时,会调用 processSelectedKeys方法来处理。 当客户端连接服务端…

    Linux 2023年6月7日
    089
  • Ubuntu 18.04 LTS的网络经常变成问号导致网速很慢的解决办法

    问题描述: Ubuntu系统Gnome桌面顶部栏的网络图标经常变成了一个问号。期间不能打开网页,在终端里面ping公网有时能通但丢包严重,或者根本就不通,错误提示 Temporar…

    Linux 2023年5月27日
    0120
  • Linux 常用命令总结(三)

    一、实用命令 1、crontab(定时任务) (1)基本概念crontab 是用来管理定时任务的命令。系统启动后,将会自动调用 crontab,如果存在任务,则根据相关定义去执行。…

    Linux 2023年5月27日
    0117
  • Java Web登录界面

    非常激动的开通了我的第一个博客,在这里希望大家能多多指点,相互学习。 一个简单的登录界面 首先我们先把这个登录分为三块: 一、数据库 数据库我用的是MYSQL; 二、前端 三、后台…

    Linux 2023年6月13日
    0114
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球