用 uuid + 当前时间戳构建唯一文件名的上传代码

上传文件的限制,Spring 默认为 1MB 的修改-CSDN博客

直接看代码

@RestController
public class UploadFileController {

    @PostMapping("/upload")
    public Result upload(String username,Integer age,MultipartFile image) throws Exception {
        log.info("上传文件 {},{},{}", username, age, image);

        // 获取文件名
        String ofn = image.getOriginalFilename();
        // 构建唯一文件名

        String ext = ofn.substring(ofn.lastIndexOf("."));
        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
        String dtnow = dateFormat.format(LocalDateTime.now());
        // 文件名为 UUID + 当前时间戳 ,分割符为 - ,扩展名为原文件扩展名
        String newofn = UUID.randomUUID().toString().replace("-","") + '-' + dtnow + ext;

        log.info("新的文件名:{}", newofn);
        // 存储文件到本地
        image.transferTo(new File("/Users/ann/JavaDev/uploadfile/university/" + newofn));

        return Result.success();
    }
}

对于 UUID 的解释

 UUID.randomUUID().toString().replace("-","")

UUID.randomUUID()               // 生成 UUID
UID.randomUUID().toString()     // 将 UUID 变成字符串
.replace("-","")                // 去掉 UUID 中间的 - 

时间结构

// 定义时间显示的结构
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
// 获取当前时间
// 并对当前时间格式化,成为 yyyyMMddHHmmss
String dtnow = dateFormat.format(LocalDateTime.now());

文件名结果

上传文件名 —— hua.png

1915986e899245a4a507af7afb6b842a-20250513235639.png

备注 ⚠️:

不使用 replace() 的结果

8855ce50-dd54-4893-8624-3122ac8c8abf-20250513235431.png

UUID的原始显示格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值