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