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());
    }
}
相关推荐
白宇横流学长25 分钟前
基于SpringBoot实现的冬奥会科普平台设计与实现【源码+文档】
java·spring boot·后端
Python编程学习圈1 小时前
Asciinema - 终端日志记录神器,开发者的福音
后端
bing.shao1 小时前
Golang 高并发秒杀系统踩坑
开发语言·后端·golang
壹方秘境1 小时前
一款方便Java开发者在IDEA中抓包分析调试接口的插件
后端
brzhang1 小时前
A2UI:但 Google 把它写成协议后,模型和交互的最后一公里被彻底补全
前端·后端·架构
开心猴爷2 小时前
iOS App 性能测试中常被忽略的运行期问题
后端
SHERlocked932 小时前
摄像头 RTSP 流视频多路实时监控解决方案实践
c++·后端·音视频开发
AutoMQ3 小时前
How does AutoMQ implement a sub-10ms latency Diskless Kafka?
后端·架构
Rover.x3 小时前
Netty基于SpringBoot实现WebSocket
spring boot·后端·websocket
疯狂的程序猴3 小时前
用 HBuilder 上架 iOS 应用时如何管理Bundle ID、证书与描述文件
后端