springboot上传文件及文件上传限制大小异常捕获
一个简单的页面上传文件,上传的接口是/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上传文件及文件上传限制大小异常捕获相关推荐
- SpringBoot框架搭建(redis多数据源+数据库多数据源+全局异常捕获)
java骨架 目录结构 ├── mvnw ├── mvnw.cmd ├── pom.xml ├── README.md ├── src/ 源文件目录 │ ├── main │ │ ├── java │ ...
- SpringBoot+El-upload实现上传文件到通用上传接口并返回文件全路径(若依前后端分离版源码分析)
场景 SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...
- springBoot 简单优雅是实现文件上传和下载
前言 好久没有更新spring Boot 这个项目了.最近看了一下docker 的知识,后期打算将spring boot 和docker 结合起来.刚好最近有一个上传文件的工作呢,刚好就想起这个脚手架 ...
- springboot 删除路径下面所有文件_springboot文件上传删除下载
SpringBoot文件上传.删除及下载 最近的项目中,需要将文件保存项目的根目录路径下,特此记录下文件的操作: 文件上传/*** 文件上传(相对路径) * *@paramuploadFile 文件 ...
- springboot上传文件过大,全局异常捕获,客户端没有返回值
springboot上传文件过大,全局异常捕获,客户端没有返回值 参考文章: (1)springboot上传文件过大,全局异常捕获,客户端没有返回值 (2)https://www.cnblogs.co ...
- springboot文件上传下载实战 ——文件上传、下载、在线打开、删除
springboot文件上传下载实战 文件上传 文件上传核心 UserFileController 文件上传测试 文件下载与在线打开 文件下载.在线打开核心 UserFileController 文件 ...
- springboot传入json和文件_Spring Boot之 Controller 接收参数和返回数据总结(包括上传、下载文件)...
server: port: 8088 servlet: context-path: /sid spring: mvc: view: prefix: / suffix: .html /** * 返回界面 ...
- MinIO入门-02 SpringBoot 整合MinIO并实现文件上传
SpringBoot 整合MinIO并实现文件上传 1.依赖 <!-- https://mvnrepository.com/artifact/io.minio/minio --> < ...
最新文章
- 【CVPR 2020】弱监督怎样做图像分类?上交大提出自组织记忆网络
- Educational Codeforces Round 93 (Rated for Div. 2) 题解
- android 将图片路径转二进制,将图像转换为二进制图像中的android
- Java中选择排序,冒泡排序,插入排序,快速排序
- (转)Spring boot(一):入门篇
- merge合并两个有序数组
- rtmp之谷歌浏览器默认启用flash
- 微信短信验证码注意事项(tp3.2-腾讯云)
- 同步I/O sync、fsync和fdatasync函数
- qt控制程序打开记事本_Qt 记事本程序
- C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想
- oracle怎么看日志文件,Oracle日志文件的管理与查看
- 博图软件的C语言脚本,wincc v13 博图软件里如何写脚本程序
- 通过链接下载google drive文件
- 【返老还童】大脑衰老可逆转,只需注入年轻脑脊液 From Nature
- 你等的最新版代码管理它来了,代码管理 Codeup概述(新版)
- Android Google Face API 增强现实教程
- 《红楼梦》人物关系有多复杂?一张图帮你理清楚!
- 计算机二级证书有用吗计算机专业,考计算机二级证书有用吗
- jdk1.6,1.7,1.8解压版无需安装(64位)