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)

大家都在看

  • Redis

    Redis原创笑笑师弟 最后发布于2018-12-21 14:17:59 阅读数 1780 收藏展开目录 redis简介 redis功能 redis学习步骤 windows系统下的…

    Linux 2023年5月28日
    0104
  • UE4游戏上架Steam全流程

    本人使用的是UE4.27.2, Windows 11操作系统。 首先,在ue4项目的插件设置中,勾选Online Subsystem 和 Online Subsystem Stea…

    Linux 2023年6月6日
    0100
  • bat-Windows的文件夹备份

    REM program:&#x7528;&#x4E8E;HTS&#x7684;Windows&#x673A;&#x5668;&#x5…

    Linux 2023年6月7日
    0100
  • ETCD分布式存储部署

    一、ETCD 概述 ETCD 是一个分布式一致性k-v存储系统,可用于服务注册发现与共享配置。具有一下优点: 简单: 相比于晦涩难懂的paxos算法,etcd基于相对简单且易实现的…

    Linux 2023年6月14日
    097
  • postgres 切换数据库提示remaining connection slots are reserved for non-replication superuser connections

    场景 使用下面命令在pg终端内,切换数据库时提示 \c db_name pg_user; # pg_user是非超级用户 报错 psql: FATAL: 53300: remain…

    Linux 2023年6月8日
    095
  • SpringBoot-swagger

    SpringBoot整合swagger SpringBoot-swagger 13.1 导入相关依赖 io.springfox springfox-swagger-ui 2.9.2…

    Linux 2023年6月14日
    092
  • 【深度学习】PyTorch Dataset类的使用与实例分析

    Dataset类 介绍 当我们得到一个数据集时,Dataset类可以帮我们提取我们需要的数据,我们用子类继承Dataset类,我们先给每个数据一个编号(idx),在后面的神经网络中…

    Linux 2023年6月13日
    094
  • Jenkins,8080端口无法修改问题

    今天安装了 Jenkins 。想把8080 端口修改为 6699 。 出现以下状况。 一:找到 jenkins.xml 文件。 vi /usr/lib/firewalld/serv…

    Linux 2023年6月13日
    085
  • ubuntu安装MySQL8.0.30

    ubuntu版本:Ubuntu 18.04.5 LTS MySQL版本:从8.0.25升级到8.0.30(2022年7月30号看,是最新版本) 升级目的:客户检测数据库服务器的my…

    Linux 2023年6月14日
    096
  • Redis采用不同内存分配器碎片率对比

    我们知道Redis并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西。所以系统内存分配器的性能及碎片率会对Redis造成一些性能上的影响。在Redis的 zmall…

    Linux 2023年5月28日
    091
  • Ubuntu 16.04 更改系统语言为简体中文 #####避坑指南

    按照我的步骤一步一步走,就不会有问题了。 [En] Follow my steps step by step, and there will be no problem. 这里我想…

    Linux 2023年5月27日
    0112
  • Redis 事务与锁

    基本操作 事务的基本操作 开启事务,设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中 multi 取消事务,终止当前事务的定义,发生在 multi 之后,exec 之…

    Linux 2023年5月28日
    082
  • 简单动态页面的爬取

    ch6&7 动态渲染页面的爬取 ajax数据爬取 动态渲染页面的爬取 selenium的使用 splash的使用 1. ajax数据爬取 ajax数据的爬取主要依靠分析XH…

    Linux 2023年6月7日
    098
  • 大数据集群服务启停脚本/常用端口/时间同步

    1、整体启动/停止HDFS start-dfs.sh/stop-dfs.sh 2、整体启动/停止YARN start-yarn.sh/stop-yarn.sh 1、分别启动/停止H…

    Linux 2023年6月8日
    091
  • 我对二进制的理解

    理解进制的重要方法是类比我们熟知的十进制 10进制 一个正常的人类,拥有10根手指,每根手指代表1个信息,那么两双手掌便可表达10个信息。1, 2, 3, …, 10。…

    Linux 2023年6月7日
    056
  • Docker Compose 安装

    方法一:这种方式相对简单,但是由于网络问题,常常安装不上,并且经常会断开,可以尝试使用网络上提供的国内安装的方法将@version 替换为要安装的版本号 sudo curl -L …

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