Spring Boot 2.X 实现文件上传(三)
使用 SpringBoot 项目完成单个、多个文件的上传处理,并将上传的文件保存到指定目录下。
代码演示案例
所有的 HTML 页面文件
index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>选择上传文件类型</title>
</head>
<script language="javascript">function single() {document.form1.action = "/singlefile";document.form1.submit();}function multi() {document.form1.action = "/multifile";document.form1.submit();}
</script>
<body>
<form name="form1" method="post"><input type="button" name="btn1" value="单个文件上传" onclick="single();"><input type="button" name="btn2" value="多个文件上传" onclick="multi();">
</form>
</body>
</html>multifile.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"/><title>多文件上传</title>
</head>
<body>
<h1 th:inlines="text">多文件上传</h1>
<form action="/multiFileUpload" method="post" enctype="multipart/form-data"><p>选择文件1: <input type="file" name="fileName"/></p><p>选择文件2: <input type="file" name="fileName"/></p><p>选择文件3: <input type="file" name="fileName"/></p><p><input type="submit" value="提交"/></p>
</form>
</body>
</html>singlefile.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"/><title>单文件上传</title>
</head>
<body>
<h1 th:inlines="text">单文件上传</h1>
<form action="/singleFile" method="post" enctype="multipart/form-data"><p>文件:<input type="file" name="head_img"/></p><p><input type="submit" value="上传"/></p>
</form>
</body>
</html>
逻辑代码
定义结果集@Getter
@Setter
@ToString
public class Result implements Serializable {private boolean flag; //是否成功private Integer code; //返回码private String message;//返回信息public Result(boolean flag, Integer code, String message) {this.flag = flag;this.code = code;this.message = message;}
}定义错误码
public class StatusCode {public static final int OK = 2000; //成功public static final int ERROR = 4000; //失败
}逻辑代码
@Controller
@Slf4j
public class FileController {@Value("${file.path}")private String filePath;// 获取 singlefile.html 页面@RequestMapping(value = "/singlefile", method = RequestMethod.POST)public String single() {return "singlefile";}// 单文件上传@RequestMapping(value = "singleFile")@ResponseBodypublic Result uploadFile(@RequestParam("head_img") MultipartFile file, HttpServletRequest request) {if (file.isEmpty()) {return new Result(false, StatusCode.ERROR, "上传的文件大小为空,请检查!!");}//获取文件名称、后缀名、大小String fileName = file.getOriginalFilename();String suffixName = fileName.substring(fileName.lastIndexOf("."));long size = file.getSize();log.info("上传的文件名称为:[{}],文件后缀为:[{}],文件大小为:[{}]!!", fileName, suffixName, size);// 存储转换后文件名称fileName = UUID.randomUUID() + suffixName;log.info("转换后的文件名为:[{}]!!", fileName);File dest = new File(filePath + fileName);//判断父目录是否存在if (!dest.getParentFile().exists()) {dest.getParentFile().mkdir();}try {file.transferTo(dest);return new Result(true, StatusCode.OK, "上传成功!!");} catch (IOException e) {log.error("上传文件过程中发生异常!", e);}return new Result(true, StatusCode.ERROR, "上传失败!!");}// 获取 multifile.html 页面@RequestMapping("/multifile")public String multi() {return "multifile";}// 多文件上传@PostMapping(value = "multiFileUpload")@ResponseBodypublic Result multiFileUpload(HttpServletRequest request) {List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("fileName");for (MultipartFile file : files) {if (file.isEmpty()) {return new Result(false, StatusCode.ERROR, "上传多个文件时,某个文件大小为空,请检查!!");} else {String fileName = file.getOriginalFilename();String suffixName = fileName.substring(fileName.lastIndexOf("."));long size = file.getSize();log.info("上传的文件名称为:[{}],文件后缀为:[{}],文件大小为:[{}]!!", fileName, suffixName, size);fileName = UUID.randomUUID() + suffixName;log.info("转换后的文件名为:[{}]!!", fileName);File dest = new File(filePath + fileName);if (!dest.getParentFile().exists()) {dest.getParentFile().mkdir();}try {file.transferTo(dest);} catch (IOException e) {log.error("上传文件过程中发生异常!!", e);}}}return new Result(true, StatusCode.OK, "上传成功!!");}
}application.properties
# 端口
server.port=8082
# 配置单个文件、多个文件大小
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
# 文件上传保存路径
file.path=E:/test/
# 取消模板文件缓存
spring.thymeleaf.cache=false
文件 结构目录
转载于:https://www.cnblogs.com/miantiao312/p/11279829.html
Spring Boot 2.X 实现文件上传(三)相关推荐
- spring boot基础教程之文件上传下载
一文件上传 文件上传主要分以下几个步骤: (1)新建maven java project: (2)在pom.xml加入相应依赖: (3)新建一个文件上传表单页面; (4)编写controller; ( ...
- Spring Boot 利用WebUploader进行文件上传
Web Uploader WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势 ...
- spring boot接收微信小程序上传的文件
spring boot接收微信小程序上传的文件,首先前台传给我们后端的不是一个路径,而是以一个文件类型传递给我,这时我们在controller层接收时就可以用MultipartFile进行接收,如果接 ...
- spring boot 整合 阿里云oss上传
Spring Boot 整合 阿里云OSS上传 OSS申请和配置 1. 注册登录 2.开通以及配置 springboot整合使用 1. 进入我们springboot的项目中,导入oss相关依赖 2. ...
- Spring MVC更多家族成员----文件上传---06
Spring MVC更多家族成员----文件上传---06 本节导读 文件上传与MultipartResolver 使用MultipartResolver进行文件上传的简单分析 StandardSer ...
- Spring Boot 2.0 多图片上传加回显
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源:http://r6f.cn/crEY 这两天公司有 ...
- Spring MVC 高级技术之文件上传(multipart)
目录 1.所需 jar 包 2.配置文件上传解析器 3.前端 Form 4.后台接收 Handler 文件上传,即处理 multipart 形式的数据. 原生 servlet 处理上传的文件数据的,s ...
- Spring Boot 静态资源映射与上传文件路由配置
默认静态资源映射目录 默认映射路径 在平常的 web 开发中,避免不了需要访问静态资源,如常规的样式,JS,图片,上传文件等;Spring Boot 默认配置对静态资源映射提供了如下路径的映射 /st ...
- jquery上传图片_文件上传三种方式
来源:python宝典 链接: https://mp.weixin.qq.com/s/YUplCQDfAucA_rS8E1T6WA 需求 上传图片在页面显示 Form表单上传 <html ...
最新文章
- VMware workstation中rhel安装VMware tools失败
- 在spring中,prototype scoped bean 如何注入单例bean中
- 智能车竞赛技术报告 | 专科基础组 - 哈尔滨铁道职业技术学院 - 智能车勇创协会
- 磁铁驱动反向续流串接电阻的的分析
- boost pcre Greta RE2 正则表达式性能测试
- SQL Server中的标识列
- 记一例 ORA-00904:标识符无效
- 【Alpha 冲刺】 10/12
- 上海出租车价格计算方法
- Spring集成web环境步骤
- [Redux/Mobx] 说说redux的优缺点分别是什么?
- 【转】s3c2440 按键驱动 — 字符设备
- 经济学python值得学吗_地藏经注音,地藏经全文,地藏经全文(注音版)——学佛网...
- python3--命名空间字典
- 蚂蚁区块链第19课 联盟链创建及管理
- 综治应急指挥中心建设方案
- python查看opencv版本_如何在Python和C ++中输出OpenCV版本号
- 记录一下Mac浏览器劫持searchbaron.com的经历
- 芯片测试需要掌握什么软件,芯片测试工程师岗位职责
- 第一章 项目时间管理的基本概念
热门文章
- Java 算法-异或校验和
- JetBrains发布DataGrip 1.0——数据库与SQL领域中的瑞士军刀
- 深入理解Struts2中的OGNL表达式
- 获取线程中抛出的异常信息
- 网路游侠:某软件版WEB应用防火墙试用
- VLAN设置错误,导致部分用户无法上网
- 如何使用TensorFlow Eager执行训练自己的FaceID ConvNet
- 移动应用程序和网页应用程序_您的移动应用程序运行缓慢的主要原因以及如何修复它...
- 超越Android:Kotlin在后端的工作方式
- Git-remote Incorrect username or password ( access token )