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());
    }
}
相关推荐
想摆烂的不会研究的研究生6 小时前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
毕设源码-郭学长6 小时前
【开题答辩全过程】以 基于SpringBoot技术的美妆销售系统为例,包含答辩的问题和答案
java·spring boot·后端
追逐时光者7 小时前
精选 10 款 .NET 开源免费、功能强大的 Windows 效率软件
后端·.net
追逐时光者7 小时前
一款开源、免费的 WPF 自定义控件集
后端·.net
S***q3778 小时前
Spring Boot管理用户数据
java·spring boot·后端
毕设源码-郭学长8 小时前
【开题答辩全过程】以 基于SpringBoot框架的民俗文化交流与交易平台的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
l***21788 小时前
SpringBoot Maven快速上手
spring boot·后端·maven
f***14779 小时前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
计算机毕设VX:Fegn08959 小时前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计