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());
    }
}
相关推荐
LeonMinkus3 小时前
dubbo3使用grpc开发分布式服务
后端
一只韩非子4 小时前
Spring AI Alibaba 快速上手教程:10 分钟接入大模型
java·后端·ai编程
起风了___4 小时前
20 分钟搞定:Jenkins + Docker 一键流水线,自动构建镜像并部署到远程服务器
后端
用户4099322502124 小时前
如何在 FastAPI 中巧妙覆盖依赖注入并拦截第三方服务调用?
后端·ai编程·trae
泉城老铁5 小时前
Spring Boot中实现多线程分片下载
java·spring boot·后端
泉城老铁5 小时前
Spring Boot中实现多文件打包下载
spring boot·后端·架构
泉城老铁5 小时前
Spring Boot中实现大文件分片下载和断点续传功能
java·spring boot·后端
码事漫谈5 小时前
C++中虚函数与构造/析构函数的深度解析
后端
百思可瑞教育5 小时前
Spring Boot 参数校验全攻略:从基础到进阶
运维·服务器·spring boot·后端·百思可瑞教育·北京百思教育