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());
    }
}
相关推荐
codervibe几秒前
多协议蜜罐初体验 🐝
后端
SamsongSSS3 分钟前
《C++ Primer Plus》读书笔记 第二章 开始学习C++
c++·后端
9号达人5 分钟前
Java18 新特性详解与实践
java·后端·面试
我不是混子11 分钟前
java浮点数精度问题及解决方案
java·后端
karry_k16 分钟前
混合存储架构
后端
yunxi_0517 分钟前
我用 Elasticsearch 做 RAG 检索的一些“土经验”
后端·llm
JaguarJack21 分钟前
PHP 8.2 vs PHP 8.3 对比:新功能、性能提升和迁移技巧
后端·php
学历真的很重要28 分钟前
Claude Code 万字斜杠命令指南
后端·语言模型·面试·职场和发展·golang·ai编程
稻草猫.1 小时前
Java线程安全:volatile与wait/notify详解
java·后端·idea
IT_陈寒1 小时前
Vite 5年迭代揭秘:3个核心优化让你的项目构建速度提升200%
前端·人工智能·后端