SpringBoot文件上传到本地路径。且使文件名唯一,通过UUID实现。

Spring框架的 MultipartFile 接口中 getOriginalFilename( ) 方法,用于获取上传文件的原始文件名。

lastIndexof(" 字符 ") 用于查找指定字符或子字符串在原字符串中最后一次出现的位置。

substring( )用于提取字符串子串的函数。它接受一个整数参数 index,并返回从该索引位置开始到字符串末尾的子串。

//获取原始文件名
    String originalFilename = image.getOriginalFilename();
    //获取字符串中 '.' 的索引位置
    int index = originalFilename.lastIndexOf(".");
    //根据索引位置,获取到文件名后缀
    String extanme = originalFilename.substring(index);
    //拼接字符串
    String newFileName = UUID.randomUUID().toString()+extanme;

上述代码可简化为

    //获取原始文件名
    String originalFilename = image.getOriginalFilename();

    //拼接字符串
    String newFileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
简单实现一下文件上传以及本地存储功能

Controller层: 

import com.projesttest.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.digester.RuleSet;
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 username, Integer age, MultipartFile image) throws Exception {
    log.info("文件上传:{},{},{}",username,age,image);
    //获取原始文件名
    String originalFilename = image.getOriginalFilename();
    //获取字符串中 '.' 的索引位置
    int index = originalFilename.lastIndexOf(".");
    //根据索引位置,获取到文件名后缀
    String extanme = originalFilename.substring(index);
    //拼接字符串
    String newFileName = UUID.randomUUID().toString()+extanme;
    //获取到新文件名
    log.info("新文件名:{}",newFileName);
    //本地存储路径+文件名
    image.transferTo(new File("E:\\image\\"+newFileName));
    return Result.success();
}
}

HTML页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传文件</title>
</head>
<body>

    <form action="/upload" method="post" enctype="multipart/form-data">
        姓名: <input type="text" name="username"><br>
        年龄: <input type="text" name="age"><br>
        头像: <input type="file" name="image"><br>
        <input type="submit" value="提交">
    </form>

</body>
</html>

在SpringBoot中,文件上传,默认单个文件允许最大大小为1M,如果需要上传大文件,可以在application.properties中进行如下配置。

# 配置单个文件上传大小限制
spring.servlet.multipart.max-file-size = 10MB
# 配置单个请求最大大小的限制
spring.servlet.multipart.max-request-size= 100MB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值