使用 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 实现文件上传(三)相关推荐

  1. spring boot基础教程之文件上传下载

    一文件上传 文件上传主要分以下几个步骤: (1)新建maven java project: (2)在pom.xml加入相应依赖: (3)新建一个文件上传表单页面; (4)编写controller; ( ...

  2. Spring Boot 利用WebUploader进行文件上传

    Web Uploader WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势 ...

  3. spring boot接收微信小程序上传的文件

    spring boot接收微信小程序上传的文件,首先前台传给我们后端的不是一个路径,而是以一个文件类型传递给我,这时我们在controller层接收时就可以用MultipartFile进行接收,如果接 ...

  4. spring boot 整合 阿里云oss上传

    Spring Boot 整合 阿里云OSS上传 OSS申请和配置 1. 注册登录 2.开通以及配置 springboot整合使用 1. 进入我们springboot的项目中,导入oss相关依赖 2. ...

  5. Spring MVC更多家族成员----文件上传---06

    Spring MVC更多家族成员----文件上传---06 本节导读 文件上传与MultipartResolver 使用MultipartResolver进行文件上传的简单分析 StandardSer ...

  6. Spring Boot 2.0 多图片上传加回显

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源:http://r6f.cn/crEY 这两天公司有 ...

  7. Spring MVC 高级技术之文件上传(multipart)

    目录 1.所需 jar 包 2.配置文件上传解析器 3.前端 Form 4.后台接收 Handler 文件上传,即处理 multipart 形式的数据. 原生 servlet 处理上传的文件数据的,s ...

  8. Spring Boot 静态资源映射与上传文件路由配置

    默认静态资源映射目录 默认映射路径 在平常的 web 开发中,避免不了需要访问静态资源,如常规的样式,JS,图片,上传文件等;Spring Boot 默认配置对静态资源映射提供了如下路径的映射 /st ...

  9. jquery上传图片_文件上传三种方式

    来源:python宝典    链接: https://mp.weixin.qq.com/s/YUplCQDfAucA_rS8E1T6WA 需求 上传图片在页面显示 Form表单上传 <html ...

最新文章

  1. VMware workstation中rhel安装VMware tools失败
  2. 在spring中,prototype scoped bean 如何注入单例bean中
  3. 智能车竞赛技术报告 | 专科基础组 - 哈尔滨铁道职业技术学院 - 智能车勇创协会
  4. 磁铁驱动反向续流串接电阻的的分析
  5. boost pcre Greta RE2 正则表达式性能测试
  6. SQL Server中的标识列
  7. 记一例 ORA-00904:标识符无效
  8. 【Alpha 冲刺】 10/12
  9. 上海出租车价格计算方法
  10. Spring集成web环境步骤
  11. [Redux/Mobx] 说说redux的优缺点分别是什么?
  12. 【转】s3c2440 按键驱动 — 字符设备
  13. 经济学python值得学吗_地藏经注音,地藏经全文,地藏经全文(注音版)——学佛网...
  14. python3--命名空间字典
  15. 蚂蚁区块链第19课 联盟链创建及管理
  16. 综治应急指挥中心建设方案
  17. python查看opencv版本_如何在Python和C ++中输出OpenCV版本号
  18. 记录一下Mac浏览器劫持searchbaron.com的经历
  19. 芯片测试需要掌握什么软件,芯片测试工程师岗位职责
  20. 第一章 项目时间管理的基本概念

热门文章

  1. Java 算法-异或校验和
  2. JetBrains发布DataGrip 1.0——数据库与SQL领域中的瑞士军刀
  3. 深入理解Struts2中的OGNL表达式
  4. 获取线程中抛出的异常信息
  5. 网路游侠:某软件版WEB应用防火墙试用
  6. VLAN设置错误,导致部分用户无法上网
  7. 如何使用TensorFlow Eager执行训练自己的FaceID ConvNet
  8. 移动应用程序和网页应用程序_您的移动应用程序运行缓慢的主要原因以及如何修复它...
  9. 超越Android:Kotlin在后端的工作方式
  10. Git-remote Incorrect username or password ( access token )