springboot 上传文件

news2024/10/7 6:45:31

在Spring Boot中,可以使用@RequestParam注解来接收文件。

在你的控制器方法中,使用@RequestParam注解来声明一个MultipartFile类型的参数来接收上传的文件

MultipartFile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称。在文件上传这方面能帮助我们快速简洁实现。

@RequestParam注解的required属性默认为true,如果请求中不包含名为file的文件,将会抛出异常。如果想要文件是可选的,可以将required属性设置为false

我们新增一个 UploadController.java文件

package shop.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("api")
public class UploadController {
    private String uploadFilePath = "D:\\2023\\toby.com\\file\\upload";

    @RequestMapping("upload")
    public Map<String,Object> upload(@RequestParam("files") MultipartFile files[]){
        Map<String,Object> res = new HashMap<>();

        for(int i=0;i<files.length;i++){
            String fileName = files[i].getOriginalFilename();  // 文件名
            File dest = new File(uploadFilePath +'/'+ fileName);
            if (!dest.getParentFile().exists()) {
                dest.getParentFile().mkdirs();
            }
            try{
                files[i].transferTo(dest);
            }catch (Exception e){
                System.out.println(e.toString());
                res.put("code",1);
                res.put("message","upload error");
                return res;
            }

        }

        res.put("code",0);
        return res;
    }
}

编译运行项目 使用postman发生上传文件请求

文件上传成功我们可以在项目中看到 新上传上来的文件

获取源代码

链接:https://pan.baidu.com/s/1nOHKaWfa2yLzP8SYq1kSgQ

提取码:vth8

加入我们一起学校

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/694749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言操作符优先级】

C语言操作符优先级 C语言操作符1、操作符的优先级序表2、操作符的属性2.1、操作符优先级运算例程12.2、操作符优先级运算例程2 C语言操作符 前言&#xff1a; &#xff08;1&#xff09;在我们熟悉的数学加减乘除运算中&#xff0c;都知道先乘除再加减&#xff0c;有括号的先算…

Error: Cannot find module ‘webpack‘ 问题解决办法

这句话的意思是&#xff1a;没有找到webpack模块。 就算之前你装了webpack&#xff0c;那肯定是非全局安装 所以要全局安装 npm install --save-dev webpack 问题解决

数据库管理-第八十六期 19c OCM之路-第一堂(01)(20230628)

数据库管理 2023-06-28 第八十六期 19c OCM之路-第一堂&#xff08;01&#xff09;1 环境补充说明2 第一堂-01考点1&#xff1a;Create a pluggable database 创建PDB考点2&#xff1a;Create tablespace 创建表空间考点3&#xff1a;Managing undo 管理undo 总结 第八十六期 1…

【无名管道】无名管道(Pipe)与进程通信:快速上手

目录 0. 管道概述&#xff1a; 1. 管道特点 2. 管道创建&#xff1a;pipe函数 3. 管道的读写特点 4. 通过fcntl函数设置文件的阻塞特性 5. 查看管道缓冲区命令 总结&#xff1a; 0. 管道概述&#xff1a; 管道也叫无名管道&#xff0c;它是是 UNIX 系统 IPC&#xff08;…

019、数据库管理之备份恢复管理(BR)

备份的重要性 数据库恢复审计和分析典型DBA任务 备份的类型 热备&#xff0c;允许应用程序完全访问数据。冷备&#xff0c;不允许应用程序访问年数据温备&#xff0c;允许应用程序读取&#xff0c;但不能修改 热备份 热备份是在读取和修改数据时进行的&#xff0c;几乎不会…

怎么高效批量调整视频的尺寸大小

大家平时在剪辑视频的过程中&#xff0c;是否会遇到视频尺寸大小不合适的情况&#xff0c;当我们遇到这种情况时&#xff0c;如何才能快速批量地解决呢&#xff1f;有没有什么方法可以快速批量修改视频尺寸大小呢&#xff1f;跟着小编一起来看看我平时批量修改视频尺寸的方法。…

联邦学习的架构思想

目录 联邦学习介绍&#xff08;非常详细&#xff09; 联邦学习的由来 联邦学习的发展历程 1) 机器学习 2) 分布式机器学习 3) 隐私保护技术 4) 联邦学习 联邦学习的规范与标准 联邦学习的架构思想 联邦学习的社区与生态 联邦学习介绍&#xff08;非常详细&#xff09…

Lenovo联想笔记本电脑 小新 Air-14 2020 Intel平台IIL版(81YJ)原装Win10系统恢复原厂OEM预装专用系统

Lenovo联想笔记本电脑&#xff0c;小新 Air-14 2020 Intel平台IIL版(81YJ)出厂Windows10系统原装系统镜像&#xff0c;恢复原厂状态 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xff1…

基于微信小程序的上课签到系统(数据库+报告+文档+演示视频)

系统技术语言介绍&#xff1a; 本系统采用了SSM (Spring Spring MVC Mybatis&#xff09;架构&#xff0c; MySQL作为基础数据库&#xff0c;微信开发工具作为前端基础&#xff0c;前端采用了 wxml的设计语言&#xff0c;Idea作为后台的开发工具。 功能列表&#xff1a; 1.…

从数字图像到音视频学习:我的学习之旅

数字图像是一门广泛应用于计算机视觉、图像处理和计算机图形学等领域的学科&#xff0c;而音视频学习则涵盖了音频和视频的处理、分析和应用。 如果你最开始接触数字图像&#xff0c;可能会学习一些基本概念&#xff0c;例如像素、分辨率、色彩空间和图像处理算法等。这可能涉…

java项目之药源购物网站ssm源码+文档

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的药源购物网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&#xff…

隔离变压器和浪涌保护器SPD有哪些不同作用

浪涌保护装置&#xff08;SPD&#xff09;和隔离变压器的作用经常混淆。为了保护敏感的电子设备和设备免受瞬态事件的影响&#xff0c;必须考虑各种因素。 无论瞬态来自外部还是内部&#xff0c;信号噪声、共模瞬变、差模瞬变和接地电位上升都可能导致保护不力的设备出现问题。…

vue中使用mock.js

安装mock npm install mockjs --save-dev或者在ui中选择依赖 查看安装是否成功 进入package.json文件 配置mock 在src目录下新建mock文件夹&#xff0c;在mock文件夹下建立index.js 配置模拟请求数据 index.js import Mock from mockjsconst loginData Mock.mock(http://l…

【 云原生 kubernetes 】- 单点登录Authelia + OpenLdap

文章目录 简介AutheliaOpenLdap属性介绍 Helm部署openldap配置调整数据持久化部署使用命令行Web Authelia 页面访问反向代理进行集成流程 ⚡️: OpenLDAP是轻量级目录访问协议&#xff08;LDAP&#xff09;的开源实现&#xff0c;它提供了一种存储和访问关于用户、组、计算机和…

使用Python将图片转pdf

使用Python将图片转pdf 1. 效果图2. 源码参考 今天需要把图片转pdf&#xff0c;发现迅捷pdf转换开始默认带水印了&#xff0c;收费版那算了&#x1f602;&#x1f602;&#xff0c;那就用Python吧&#xff0c;可单转&#xff0c;可批量转。 参考: https://blog.csdn.net/qq_53…

我是如何在linux下 安装 mongoDB的

背景 接到上级任务&#xff0c;需要在测试环境搭建一套mongodb&#xff1b;对于从来没接触过mongodb的小白&#xff0c;但拥有多年编程经验的我来说&#xff0c;不虚好吧。因为我有自己做事的思考。 首先向领导确认两点&#xff1a; 搭建mongo db是单机版的&#xff0c;还是主…

自定义Veiw实战《渐变的文字》

自定义Veiw实战《渐变的文字》 前言SpannableString什么时候使用常用场景 自定义TextView控件什么时候使用实战歌词渐变的文字先看效果第一步&#xff1a;初始化第二步&#xff1a;测量文字&#xff0c;并确认文字绘制的起点第三步&#xff1a;绘制文字第四步&#xff1a;调用 …

Node.js安装及npm国内镜像配置

node.js中文网站下载&#xff0c;以16.17为例&#xff01;&#xff01;&#xff01;&#xff01; 安装 1.网站链接 CNPM Binaries Mirror (npmmirror.com) 根据自己的版本选择&#xff0c;我是64位选择了zip版 2.下载完成后解压 我选择的目录是&#xff08;E:\Environments…

mac中在html中引入react.development.js、react-dom.development.js报错

错误描述 Uncaught ReferenceError: process is not definedUncaught Invariant Violation: ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.Inline Babel script:3 Uncaught ReferenceError: React is not defined解决 1…

react中数组列表的简单新增,删除以及修改实践

react中数组列表的简单新增&#xff0c;删除以及修改实践 效果示例图示例代码 index.jsx示例样式 index.scss 效果示例图 新增图片 编辑图片 示例代码 index.jsx import { useEffect, useState } from "react"; import "./index.scss";// 创建数据 fu…