Spring boot文件上传

本文介绍了如何在Spring Boot后端实现文件上传功能,包括单文件上传的处理流程、文件名重命名及路径创建,以及多文件上传的代码示例,展示了如何遍历并保存多个文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件上传后端要  post请求  

单文件上传

后端

    @PostMapping("file")
    @ResponseBody
    public String file(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
        //获取服务器的真实路径
        String realPath = request.getServletContext().getRealPath("/img/");
        
        System.out.println(realPath);
        File file1 = new File(realPath);
        if (!file1.exists()) {
            file1.mkdirs();
        }
        //获取上传文件名字 修改防止重名
        String filename = UUID.randomUUID().toString().replace("-", "") 
                + file.getOriginalFilename();
        System.out.println(filename);
        //保存到本地
        file.transferTo(new File(realPath + filename));
        return "上传成功";
    }

前端

<form action="file" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="提交">
</form>

多文件上传

前端

<form action="file2" method="post" enctype="multipart/form-data">
    <input type="file" name="file" multiple>
    <input type="submit" value="提交">
</form>

后端

 @PostMapping("file2")
    @ResponseBody
    public String moreFile(MultipartFile[] file, HttpServletRequest request) {
        //获取真实路径
        String realPath = request.getServletContext().getRealPath("/img");
        //遍历获取上传的文件
        for (MultipartFile multipartFile : file) {
            //获取文件名
            String filename = multipartFile.getOriginalFilename();
            //判断非空
            assert filename != null;
            //截取文件格式
            String suffix = filename.substring(filename.lastIndexOf("."));
            //改变字符串名字防止重名
            filename = UUID.randomUUID().toString().replaceAll("-", "") + filename;
            System.out.println(filename);
            File saveFile = new File(realPath + filename);
            //不存在则创建
            if (!saveFile.exists()) {
                saveFile.mkdirs();
            }
            try {
                //保存文件
                multipartFile.transferTo(saveFile);
            } catch (IOException e) {
                e.printStackTrace();
                return "上传失败";
            }
        }
        return "上传成功";
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值