spring boot上传文件-参数注入对象

2023-11-12

1、pom.xml依赖

<dependencies>
	<!-- spring boot -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.apache.httpcomponents</groupId>
		<artifactId>httpclient</artifactId>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
	<dependency>
		<groupId>org.apache.httpcomponents</groupId>
		<artifactId>httpcore</artifactId>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime -->
	<dependency>
		<groupId>org.apache.httpcomponents</groupId>
		<artifactId>httpmime</artifactId>
	</dependency>
</dependencies>

2、接口

2.1 一般参数

private Logger logger = LoggerFactory.getLogger(getClass());

private String filePath = "D:/1/";

@RequestMapping("/upLoadFile")
public User uploadFiles(@RequestParam("file") MultipartFile[] files,@RequestParam("em") String em) throws IOException {
	logger.info("em:{}",em);
	for (int i = 0; i < files.length; i++) {
		try {
			uploadFile(files[i].getBytes(), files[i].getOriginalFilename());
		} catch (Exception e) {
			e.printStackTrace();
			logger.info("上传文件发生错误");
		}
	}
	return new User("1", "张三", 12);
}

private void uploadFile(byte[] file, String fileName) throws Exception {
	File targetFile = new File(filePath);
	if (!targetFile.exists()) {
		targetFile.mkdirs();
	}
	FileOutputStream out = new FileOutputStream(filePath + fileName);
	out.write(file);
	out.flush();
	out.close();
}

2.2 对象注入

2.2.1 对象类型

import org.springframework.web.multipart.MultipartFile;

/**   
 * @Title: FormData.java 
 * @Package com.spring.pro.model 
 * @Description:  
 * @author ybwei  
 * @date 2018年11月14日 下午4:37:15 
 * @version V1.0   
 */
public class FormData {

	private String name;
    private String email;
    private MultipartFile file;
    private MultipartFile file2;
    
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public MultipartFile getFile() {
		return file;
	}
	public void setFile(MultipartFile file) {
		this.file = file;
	}
	public MultipartFile getFile2() {
		return file2;
	}
	public void setFile2(MultipartFile file2) {
		this.file2 = file2;
	}
}

2.2.2 接口

@RequestMapping("/upLoadFile2")
public User uploadFiles2(@ModelAttribute FormData fd) throws Exception {
	logger.info("fd:{}",JSON.toJSONString(fd));
	uploadFile(fd.getFile().getBytes(), fd.getFile().getOriginalFilename());
	uploadFile(fd.getFile2().getBytes(), fd.getFile2().getOriginalFilename());
	return new User("1", "张三", 12);
}

2.2.3 @ModelAttribute

  1. 应用到方法
  2. 应用到方法参数
  3. 应用到方法上,方法使用了@RequestMapping

2.2.2 使用的是2。绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用。

3、测试

参考https://blog.csdn.net/xixingzhe2/article/details/82982453

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring boot上传文件-参数注入对象 的相关文章

随机推荐

  • 升降压电路Charger&Boost 自己的小解读

    上图为charger内部大致的结构图 Vbus进来 Q1可先认为是二极管 当Q2开启时 可以向后级电感储能 当Q2关断时 Q3 SW 电池形成一个回路 因为同样接地 电感给电池充电 锂电池标称值为3 7V 满电电压是4 2V VBUS电压是
  • LPDDR4特点和基本概念--基于Hynix H9HCNNNBPUMLHR系列

    Feature 两个Channel 每个Channel有8个Bank 对于command和address 采用SDR传输减少总引脚数量 所有的command和address在CLK上升沿锁存 每两个时钟周期传输一个command 对于数据线
  • Oracle --------序列

    1 思考问题 在某张表中 存在一个id列 整数 用户希望在添加记录的时候 该列从1开始 自动的增长 如何处理 2 介绍 Oracle通过序列处理自动增长列 1 可以为表中的列自动产生值 2 由用户创建数据库对象 并可由多个用户共享 3 一般
  • 六. go 高性能编程之 空结构体 struct{} 的使用

    目录 空结构体的优点 实现集合Set 不发送数据的信道channel 仅包含方法的结构体 空结构体的优点 因为空结构体不占据内存空间 因此被广泛作为各种场景下的占位符使用 Go 语言中 可以使用 unsafe Sizeof 计算出一个数据类
  • DDR5内存条容量计算

    DDR5内存条容量计算 一 理解DDR5通道的变化 二 理解芯片package 三 DDR5 symmetric module容量计算 之前对DDR的一些基础知识进行了总结 最近需要了解DDR5的知识 在之前文章基础上又有一些认识 所以重新
  • NumPy 的随机采样模块 random 使用简单介绍

    NumPy的API的简单介绍 NumPy 提供的random模块 提供了方便的自动生成 伪 随机数的API 一 使用简单随机数API生成随机数组 1 random rand d0 d1 dn 参数 d0 d1 dn int optional
  • MySQL 存储函数

    文章目录 1 简介 2 创建存储函数 3 调用存储函数 4 查看存储函数 SHOW FUNCTION STATUS SHOW CREATE FUNCTION 5 修改存储函数 6 删除存储函数 参考文献 1 简介 MySQL 存储函数 St
  • java向多线程中传递参数的三种方法详细介绍

    在传统的同步开发模式下 当我们调用一个函数时 通过这个函数的参数将数据传入 并通过这个函数的返回值来返回最终的计算结果 但在多线程的异步开发模式下 数据的传递和返回和同步开发模式有很大的区别 由于线程的运行和结束是不可预料的 因此 在传递和
  • 3-4 数据变换

    3 4 数据变换 请参考 数据准备和特征工程 中的相关章节 调试如下代码 基础知识 import pandas as pd data pd read csv home aistudio data data20514 freefall csv
  • Python 魔法方法

    视频版教程 Python3零基础7天入门实战视频教程 Python的魔法方法 也称为特殊方法或双下划线方法 是一种特殊的方法 用于在类中实现一些特殊的功能 这些方法的名称始终以双下划线开头和结尾 例如 init repr add 等 str
  • SaaS “可配置”和“多租户”架构的几种技术实现方式

    1 数据存储方式的选择 多租户 Multi Tenant 即多个租户共用一个实例 租户的数据既有隔离又有共享 说到底是要解决数据存储的问题 常用的数据存储方式有三种 方案一 独立数据库 一个Tenant 一个Database 的数据存储方式
  • 人脸识别体征提取arcFace技术

  • hexo编写博客问题

    创建并部署博客的基本步骤 hexo new 创建一个名字为 的博客 具体title也可在文档中修改 hexo clean 清除缓存文件 db json 和已生成的静态文件 public hexo g hexo generate的缩写 生成网
  • java中判断一个数是否为偶数

    package Day3 import com sun java swing plaf windows WindowsTabbedPaneUI public class Day03 Tast04 public static void mai
  • C#的数据类型

    C 的数据类型 1 整数类型 sbyte System SByte 8位有符号整数 short System Int16 16位有符号整数 int System Int32 32位有符号整数 long System Int64 64位有符号
  • 深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统

    作者 寒小阳 时间 2016年3月 出处 http blog csdn net han xiaoyang article details 50856583 声明 版权所有 转载请联系作者并注明出处 1 引言 本系统是基于CVPR2015的论
  • openwrt 的常用指令

    https wiki openwrt org zh cn doc howto user beginner cli
  • C、C++内存对齐

    文章转载自 http www jellythink com archives 413 include
  • 【Spring基础】@Configuration和@Import

    起因 偶然间 用到了 Configuration创建Bean 对于 Configuration又学到了一些知识点 单例模式 网上查资料 理解有误差 以为单例模式一个类只有一个实例 只能创建一个Bean 但是如果同一个类需要创建多个对象的时候
  • spring boot上传文件-参数注入对象

    1 pom xml依赖