IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot 文件上传、配置文件大小、图片展示、全局异常处理 -> 正文阅读

[Java知识库]springboot 文件上传、配置文件大小、图片展示、全局异常处理

作为Java-web,平时总会在项目中涉及到文件上传,比如图片上传、Excel上传、PDF上传等等情况,今天以最普遍的图片上传为例,展示如下:

pom.xml

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.4.RELEASE</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!--  第三方工具类 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.12.0</version>
		</dependency>
	</dependencies>

application.yml

server:
  port: 6060
 # 图片存储地址
img:
  location: C:/Download

spring:
  servlet:
    multipart:
      enabled: true
      # 设置单文件最大值
      max-file-size: 2MB
      # 设置单次请求文件最大值
      max-request-size: 10MB
  # 设置文件预览路径
  resources:
    static-locations: file:${img.location}

业务逻辑

@RestController
@RequestMapping("/upload")
public class UploadController {

    @Value("${img.location}")
    private String imgLocation;

    @Value("${spring.servlet.multipart.max-file-size}")
    private String imgSize;


    @PostMapping("/img")
    public String uploadImg(@RequestParam("logo") MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
        FileOutputStream fileOutputStream = null;
        String newFileName = null;
        if (file != null) {
            //获取文件原始文件名
            String filename = file.getOriginalFilename();
            if (StringUtils.isNotBlank(filename)) {

                String[] filenameArr = filename.split("\\.");
                //  获取文件后缀名
                String suffix = filenameArr[filenameArr.length - 1];
                // 判断图片格式,判断时忽略大小写
                if (!suffix.equalsIgnoreCase("png") && !suffix.equalsIgnoreCase("jpg") && !suffix.equalsIgnoreCase("jpeg")) {
                    throw new RuntimeException("图片格式不正确");
                }
                SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
                String date = df.format(new Date());// new Date()为获取当前系统时间,也可使用当前时间戳
                // 文件名重组  logo-uuid()随机字符-时间
                newFileName = "logo-" + UUID.randomUUID() + date + "." + suffix;

                // 图片最终保存位置  路径 + 文件名
                String finalFilePath = imgLocation + File.separator + newFileName;
                System.out.println(finalFilePath);
                // 上传文件
                File outFile = new File(finalFilePath);
                // 判断文件夹是否存在
                if (outFile.getParentFile() != null) {
                    // 创建文件夹
                    outFile.getParentFile().mkdirs();
                }
                // 文件输出保存到文件夹
                fileOutputStream = new FileOutputStream(outFile);
                InputStream inputStream = file.getInputStream();

                IOUtils.copy(inputStream, fileOutputStream);
            }
        } else {
            throw new RuntimeException("文件不能为空");
        }
        return "图片上传成功:查看地址为:ip:port" + newFileName;
    }

    private long parseSize(String size) {
        size = size.toUpperCase();
        return size.endsWith("KB")?Long.valueOf(size.substring(0, size.length() - 2)).longValue() * 1024L:(size.endsWith("MB")?Long.valueOf(size.substring(0, size.length() - 2)).longValue() * 1024L * 1024L:Long.valueOf(size).longValue());
    }
}

全局异常类

/**
 * @Description: 设置全局异常类,捕获异常
 *  全局异常类,是在Controller执行之前被调用的
 */
@RestControllerAdvice
public class CommonExceptionHandler {

    //单独捕获 文件上传过大的异常,可以配合 使用统一返回对象RestUtil(code,msg,data) 进行指定错误码、错误消息内容等
    @ExceptionHandler(value = MaxUploadSizeExceededException.class)
    public String Exception(MaxUploadSizeExceededException e) {
        return "上传文件过大,不得超过2MB";
        //return e.getMessage();
    }

}

通过postman测试

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 21:56:42  更:2022-03-17 22:00:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:03:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码