SpringBoot上传文件-本地存储

 1.常规

1.1定义一个控制类

说明:创建UploadController.java

package com.itheima.controller;

import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@Slf4j
@RestController
public class UploadController {

    @PostMapping("/upload")
    public Result upload(String name, Integer age, MultipartFile image) throws IOException {
        log.info("文件上传{},{},{}", name, age, image);
//       将文件存储在服务器的磁盘目录中  E:\aWeb\afterWeb\javaweb\images
//       获取原始文件名
        String originalFilename = image.getOriginalFilename();
//      拼接路径 
        image.transferTo(new File("E:\\aWeb\\afterWeb\\javaweb\\images\\" + originalFilename));
        return Result.success();

    }
}

1.2测试接口

SpringBoot上传文件-本地存储_第1张图片

1.3成功

SpringBoot上传文件-本地存储_第2张图片

2.优化

 说明:解决上传文件名相同会被替换。使用UUID生成随机的文件名

2.1控制类

说明:定义UploadController.java

package com.itheima.controller;

import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Slf4j
@RestController
public class UploadController {

    @PostMapping("/upload")
    public Result upload(String name, Integer age, MultipartFile image) throws IOException {
        log.info("文件上传{},{},{}", name, age, image);
//       将文件存储在服务器的磁盘目录中  E:\aWeb\afterWeb\javaweb\images
//       获取原始文件名
        String originalFilename = image.getOriginalFilename();
//        构建新的文件名
     String newFileName=UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));
//    构建唯一的文件名(不能重复) uuid
        //      拼接路径
        image.transferTo(new File("E:\\aWeb\\afterWeb\\javaweb\\images\\" + newFileName));
        return Result.success();

    }
}

2.2测试SpringBoot上传文件-本地存储_第3张图片

2.3 成功

SpringBoot上传文件-本地存储_第4张图片

2.4配置上传文件大小

说明:SpringBoot中,文件上传,默认单个文件允许最大大小为1M。需要配置才行!

#配置上传文件的大小限制
spring.servlet.multipart.max-file-size=10MB
#配置单个请求的最大 大小的限制(一次请求中是可以上传多个文件)
spring.servlet.multipa

2.5 application.properties

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/tlias
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=123456

#配置mybatis的日志, 指定输出到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#开启mybatis的驼峰命名自动映射开关 a_column ------> aCloumn
mybatis.configuration.map-underscore-to-camel-case=true

#配置上传文件的大小限制
spring.servlet.multipart.max-file-size=10MB
#配置单个请求的最大 大小的限制(一次请求中是可以上传多个文件)
spring.servlet.multipart.max-request-size=100MB

3.总结

说明:常见的方法

SpringBoot上传文件-本地存储_第5张图片

 

你可能感兴趣的:(SpringBoot,java,spring,boot,后端)