赞
踩
UUID是Universally Unique Identifier的缩写,即通用唯一识别码。UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为16^32 = 2^128,约等于3.4 x 10^38。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。
UUID的作用是让分布式系统中的各个节点都能有唯一的标识符,而不需要通过中央控制机构来分配。这样可以避免在分布式系统中出现重复的标识符,从而保证了系统的稳定性和可靠性。
测试代码如下:
- @Test
- public void testUuid(){
- for (int i = 0; i < 1000; i++) {
- String uuid = UUID.randomUUID().toString();
- System.out.println(uuid);
- }
- }
执行代码:
看起来一定很熟悉把,我们可以用来防止文件名重复造成,文件覆盖,使每一个文件名都是独一无二的。
lastIndexOf("字符")
是用于查找指定字符或子字符串在原字符串中最后一次出现的位置。
substring(index)
用于提取字符串子串的函数。它接受一个整数参数 index
,并返回从该索引位置开始到字符串末尾的子串。
- //获取原始文件名
- String originalFilename = image.getOriginalFilename();
- //构造唯一的文件名(不能重复)--uuid(通用唯一识别码) a758f47d-8807-4d50-af22-5b4b3208f193
- //获取原字符串中最后一次出现 '.' 的索引位置
- int index = originalFilename.lastIndexOf(".");
- //拼接字符串,得到唯一标识的文件名
- String extname = originalFilename.substring(index);
- String newFileName = UUID.randomUUID().toString()+extname;
- log.info("新的文件名:{}", newFileName);
- @Slf4j
- @RestController
- public class UploadController {
-
- @PostMapping("/upload")
- public Result upload(String username, Integer age, MultipartFile image) throws IOException {
- log.info("文件上传:{}, {}, {}", username, age, image);
-
- //获取原始文件名
- String originalFilename = image.getOriginalFilename();
-
- //构造唯一的文件名(不能重复)--uuid(通用唯一识别码) a758f47d-8807-4d50-af22-5b4b3208f193
- int index = originalFilename.lastIndexOf(".");
- String extname = originalFilename.substring(index);
- String newFileName = UUID.randomUUID().toString()+extname;
- log.info("新的文件名:{}", newFileName);
-
- //将文件存储在服务器的磁盘目录中 E:\images
- image.transferTo(new File("E:\\桌面\\"+newFileName));
- return Result.success();
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- <!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>
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Spring Boot 默认的文件上传大小限制是 1MB。如果上传文件过大,可以自行配置:
- #配置单个文件最大上传大小
- spring.servlet.multipart.max-file-size=10MB
- #配置单个请求最大大小的限制(一次请求中是可以上传多个文件)
- spring.servlet.multipart.max-request-size=10MB
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。