一个简单的页面上传文件,上传的接口是/upload,请求方法是post,enctype(表单类型)是multipart/form-data

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data"><input type="file" name="uploadFile" value="请选择文件" multiple><input type="submit" value="上传">
</form>
</body>
</html>

在项目中新建一个webapp/uploadFile的文件夹

接下来编写文件上传的controller接口:

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;@Controller
public class controller {SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/");@RequestMapping("/test")public String test() {return "upload";}@PostMapping("/upload")@ResponseBodypublic String upload(MultipartFile uploadFile, HttpServletRequest req) {//获取uploadFile文件在该项目的绝对路径String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/");System.out.println("realPath:" + realPath);String format = sdf.format(new Date());File folder = new File(realPath + format);System.out.println("folder:" + folder);//若果不存在该文件夹,则新建if (!folder.isDirectory()) {folder.mkdirs();}String oldName = uploadFile.getOriginalFilename();String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."), oldName.length());try {uploadFile.transferTo(new File(folder, newName));System.out.println("保存文件成功");String filePath = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/uploadFile/"+ format + newName;return filePath;} catch (IOException e) {// e.printStackTrace();}return "上传失败!";}
}

全局异常之上传文件超过了限制大小

@ControllerAdvice是最常见的全局异常处理。

@ControllerAdvice结合@ExceptionHandler客户以定义全局异常捕获机制!

import java.io.IOException;import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.servlet.ModelAndView;@ControllerAdvice
public class CustomExceptionHandler {@ExceptionHandler(MaxUploadSizeExceededException.class)public ModelAndView uploadException(MaxUploadSizeExceededException e) throws IOException {ModelAndView mv = new ModelAndView();mv.addObject("msg", "最大上传文件为1M,上传文件大小超出限制!");mv.setViewName("error");return mv;}@ExceptionHandler(Exception.class)public void myexce(Exception e) {System.out.println("myexce>>>"+e.getMessage());}
}

新建一个报错页面:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body> <div th:text="${msg}"></div></body>
</html>

springboot上传文件及文件上传限制大小异常捕获相关推荐

  1. SpringBoot框架搭建(redis多数据源+数据库多数据源+全局异常捕获)

    java骨架 目录结构 ├── mvnw ├── mvnw.cmd ├── pom.xml ├── README.md ├── src/ 源文件目录 │ ├── main │ │ ├── java │ ...

  2. SpringBoot+El-upload实现上传文件到通用上传接口并返回文件全路径(若依前后端分离版源码分析)

    场景 SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  3. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...

  4. springBoot 简单优雅是实现文件上传和下载

    前言 好久没有更新spring Boot 这个项目了.最近看了一下docker 的知识,后期打算将spring boot 和docker 结合起来.刚好最近有一个上传文件的工作呢,刚好就想起这个脚手架 ...

  5. springboot 删除路径下面所有文件_springboot文件上传删除下载

    SpringBoot文件上传.删除及下载 最近的项目中,需要将文件保存项目的根目录路径下,特此记录下文件的操作: 文件上传/*** 文件上传(相对路径) * *@paramuploadFile 文件 ...

  6. springboot上传文件过大,全局异常捕获,客户端没有返回值

    springboot上传文件过大,全局异常捕获,客户端没有返回值 参考文章: (1)springboot上传文件过大,全局异常捕获,客户端没有返回值 (2)https://www.cnblogs.co ...

  7. springboot文件上传下载实战 ——文件上传、下载、在线打开、删除

    springboot文件上传下载实战 文件上传 文件上传核心 UserFileController 文件上传测试 文件下载与在线打开 文件下载.在线打开核心 UserFileController 文件 ...

  8. springboot传入json和文件_Spring Boot之 Controller 接收参数和返回数据总结(包括上传、下载文件)...

    server: port: 8088 servlet: context-path: /sid spring: mvc: view: prefix: / suffix: .html /** * 返回界面 ...

  9. MinIO入门-02 SpringBoot 整合MinIO并实现文件上传

    SpringBoot 整合MinIO并实现文件上传 1.依赖 <!-- https://mvnrepository.com/artifact/io.minio/minio --> < ...

最新文章

  1. 【CVPR 2020】弱监督怎样做图像分类?上交大提出自组织记忆网络
  2. Educational Codeforces Round 93 (Rated for Div. 2) 题解
  3. android 将图片路径转二进制,将图像转换为二进制图像中的android
  4. Java中选择排序,冒泡排序,插入排序,快速排序
  5. (转)Spring boot(一):入门篇
  6. merge合并两个有序数组
  7. rtmp之谷歌浏览器默认启用flash
  8. 微信短信验证码注意事项(tp3.2-腾讯云)
  9. 同步I/O sync、fsync和fdatasync函数
  10. qt控制程序打开记事本_Qt 记事本程序
  11. C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想
  12. oracle怎么看日志文件,Oracle日志文件的管理与查看
  13. 博图软件的C语言脚本,wincc v13 博图软件里如何写脚本程序
  14. 通过链接下载google drive文件
  15. 【返老还童】大脑衰老可逆转,只需注入年轻脑脊液 From Nature
  16. 你等的最新版代码管理它来了,代码管理 Codeup概述(新版)
  17. Android Google Face API 增强现实教程
  18. 《红楼梦》人物关系有多复杂?一张图帮你理清楚!
  19. 计算机二级证书有用吗计算机专业,考计算机二级证书有用吗
  20. jdk1.6,1.7,1.8解压版无需安装(64位)

热门文章

  1. Python 进阶之路 (十) 再立Flag, 社区最全的itertools深度解析(中)
  2. 博客园添加一个分享的
  3. git 不用clone整个远程仓库,只把特定的commit给fetch下来的方案
  4. BIEE连接数据库的方法
  5. Kendo UI Professional Q3 2015 Beta发布[附下载]
  6. ubuntu 配置静态IP及DNS
  7. 如何锁定 Visual SourceSafe 数据库(转载)
  8. C++跨平台开发方法/工具
  9. python3----列表
  10. 软件项目验收的准备工作