java文件上传

文件上传,使用transferTo创建一个新的文件保存上传的源文件。包括生成一个唯一的文件名称,防止上传文件出现文件名称相同,出现文件覆盖问题。

java 复制代码
//处理用户的注册请求方法,包括文件上传
@PostMapping("/upload")
@ResponseBody
public String upload(@RequestParam(value = "name") String name,
                     @RequestParam(value = "email") String email,
                     @RequestParam(value = "age") Integer age,
                     @RequestParam(value = "job") String job,
                     @RequestParam(value = "header") MultipartFile header,
                     @RequestParam(value = "photos") MultipartFile[] photos) throws IOException {
    //获取到上传文件的信息
    log.info("上传的信息:name={}  email={}  age={}  job={}  header={}  photos={} ",name,email,age,job,header,photos);
    //将上传文件保存到指定的位置。

    //动态创建图片保存的位置+
    //1、获取上传文件的路径
    String path = ResourceUtils.getURL("classpath:").getPath();
    //2、指定要上传的目录
    File file = new File(path + WebUtils.getUploadFileDirectory());
    //3、判断目录是否存在
    if (!file.exists()) {
        //如果不存在就进行创建
        file.mkdirs();
    }

    //1、判断上传的文件是否为空
    if(!header.isEmpty()){
        //2、获取上传文件的原文件名称
        String originalFilename = header.getOriginalFilename();
        //解决文件上传,名称重复问题
        String Filename = UUID.randomUUID().toString() + "_" + System.currentTimeMillis() + originalFilename;
        //3、将文件放到指定位置
        //header.transferTo(new File("path/" + originalFilename));
        header.transferTo(new File(file.getAbsolutePath() + "/" + Filename));
    }

    //1、处理宠物图片,判断上传的图片是否大于一张
    if(photos.length>0){
        //2、对上传的多张图片进行遍历
        for (MultipartFile photo : photos) {
            //3、判断这张图片是否为空
            if (!photo.isEmpty()) {
                String originalFilename = photo.getOriginalFilename();
                String Filename = UUID.randomUUID().toString() + "_" + System.currentTimeMillis() + originalFilename;
                //photo.transferTo(new File("path\" + originalFilename));
                photo.transferTo(new File(file.getAbsolutePath() + "/" + Filename));
            }
        }
    }
    return "success";
}

编写一个工具类,用于生成基于当前年月日的上传目录。

java 复制代码
public class WebUtils {
    //定义一个上传文件的路径
    public static String UPLOAD_FILE_DIRECTORY = "static/images/upload/";

    //编写方法,生成一个目录,根据当前的年/月/日
    public static String getUploadFileDirectory() {
        return UPLOAD_FILE_DIRECTORY + new SimpleDateFormat("yyyy/MM/dd").format(new Date());
    }
}
相关推荐
大鸡腿同学5 小时前
【成长类】《只有偏执狂才能生存》读书笔记:程序员的偏执型成长地图
后端
0xDevNull5 小时前
MySQL数据冷热分离详解
后端·mysql
AI袋鼠帝5 小时前
OpenClaw(龙虾)最强开源对手!Github 40K Star了,又一个爆火的Agent..
后端
新知图书7 小时前
搭建Spring Boot开发环境
java·spring boot·后端
宸津-代码粉碎机7 小时前
Spring Boot 4.0虚拟线程实战调优技巧,最大化发挥并发优势
java·人工智能·spring boot·后端·python
小码哥_常7 小时前
一个Starter搞定六种防护,Spring Boot API的超强护盾来了
后端
小村儿9 小时前
连载04-最重要的Skill---一起吃透 Claude Code,告别 AI coding 迷茫
前端·后端·ai编程
IT_陈寒10 小时前
Vite的alias配置把我整不会了,原来是这个坑
前端·人工智能·后端
gelald10 小时前
Spring Boot - 自动配置原理
java·spring boot·后端
希望永不加班11 小时前
SpringBoot 集成测试:@SpringBootTest 与 MockMvc
java·spring boot·后端·log4j·集成测试