当前位置:   article > 正文

springboot文件上传以及本地存储,UUID的使用,防止文件覆盖_springboot uuid

springboot uuid

前置知识:


什么是UUID ?

        UUID是Universally Unique Identifier的缩写,即通用唯一识别码。UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为16^32 = 2^128,约等于3.4 x 10^38。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。

        UUID的作用是让分布式系统中的各个节点都能有唯一的标识符,而不需要通过中央控制机构来分配。这样可以避免在分布式系统中出现重复的标识符,从而保证了系统的稳定性和可靠性。

那么UUID到底长什么样子呢?

测试代码如下: 

  1. @Test
  2. public void testUuid(){
  3. for (int i = 0; i < 1000; i++) {
  4. String uuid = UUID.randomUUID().toString();
  5. System.out.println(uuid);
  6. }
  7. }

执行代码: 

 

 看起来一定很熟悉把,我们可以用来防止文件名重复造成,文件覆盖,使每一个文件名都是独一无二的。

如何使用UUID拼接得到新的文件名呢?

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

  • 如果找到指定的字符或子字符串,则返回其在原字符串中最后一次出现的位置(从0开始计数)。
  • 如果未找到指定的字符或子字符串,则返回 -1。

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

  1. //获取原始文件名
  2. String originalFilename = image.getOriginalFilename();
  3. //构造唯一的文件名(不能重复)--uuid(通用唯一识别码) a758f47d-8807-4d50-af22-5b4b3208f193
  4. //获取原字符串中最后一次出现 '.' 的索引位置
  5. int index = originalFilename.lastIndexOf(".");
  6. //拼接字符串,得到唯一标识的文件名
  7. String extname = originalFilename.substring(index);
  8. String newFileName = UUID.randomUUID().toString()+extname;
  9. log.info("新的文件名:{}", newFileName);

Controller层: 

  1. @Slf4j
  2. @RestController
  3. public class UploadController {
  4. @PostMapping("/upload")
  5. public Result upload(String username, Integer age, MultipartFile image) throws IOException {
  6. log.info("文件上传:{}, {}, {}", username, age, image);
  7. //获取原始文件名
  8. String originalFilename = image.getOriginalFilename();
  9. //构造唯一的文件名(不能重复)--uuid(通用唯一识别码) a758f47d-8807-4d50-af22-5b4b3208f193
  10. int index = originalFilename.lastIndexOf(".");
  11. String extname = originalFilename.substring(index);
  12. String newFileName = UUID.randomUUID().toString()+extname;
  13. log.info("新的文件名:{}", newFileName);
  14. //将文件存储在服务器的磁盘目录中 E:\images
  15. image.transferTo(new File("E:\\桌面\\"+newFileName));
  16. return Result.success();
  17. }
  18. }

 这是简单的前端页面:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>上传文件</title>
  6. </head>
  7. <body>
  8. <form action="/upload" method="post" enctype="multipart/form-data">
  9. 姓名: <input type="text" name="username"><br>
  10. 年龄: <input type="text" name="age"><br>
  11. 头像: <input type="file" name="image"><br>
  12. <input type="submit" value="提交">
  13. </form>
  14. </body>
  15. </html>

这是pom.xml配置文件:

 Spring Boot 默认的文件上传大小限制是 1MB。如果上传文件过大,可以自行配置:

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/995880?site
推荐阅读
相关标签
  

闽ICP备14008679号