SpringBoot文件上传

1.引入web依赖

 <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.设置文件上传的相关参数,一般设置以下两项即可

#文件上传
#单个文件最大内存
spring.servlet.multipart.max-file-size=10MB
#上传请求最大内存
spring.servlet.multipart.max-request-size=10MB

注意:单位MB必须写对,不然会报以下错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'spring.servlet.multipart.max-file-size' to org.springframework.util.unit.DataSize:

    Property: spring.servlet.multipart.max-file-size
    Value: 10M
    Origin: class path resource [application.properties]:12:40
    Reason: failed to convert java.lang.String to org.springframework.util.unit.DataSize

3.单文件上传

3.1前端页面

此处需要注意的是,Form表单中的method必须为post请求,并且加上enctype="multipart/form-data",以及inpunt中加上name="file"属性。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>文件上传</title>
    </head>
    <body>
        <h1>文件上传</h1>
        <form method="post" enctype="multipart/form-data" action="/upload">
            请选择文件:<br>
            <input type="file" name="file">
            <input type="submit" value="上传">
        </form>
    </body>
</html>

3.2.后台页面

@Controller
public class UploadController {
    //跳转到上传页面
    @RequestMapping("/toupload")
    public String toUpload(){
        return "upload";
    }

    @RequestMapping("/upload")
    @ResponseBody
    public String upload(@RequestParam MultipartFile file){
            //判断文件是否为空
        if (file.isEmpty()){
            return "please choices a file";
        }
        Calendar calendar=Calendar.getInstance();
        String rootPath="E:\\upload";
        //创建年月文件夹
        File dateDirs=new File(calendar.get(Calendar.YEAR)
                +File.separator+(calendar.get(Calendar.MONTH)+1));
        //目标文件
        File descFile=new File(rootPath+File.separator+dateDirs
                +File.separator+file.getOriginalFilename());
        //判断目标文件夹是否存在
        if (!descFile.getParentFile().exists()){
            descFile.getParentFile().mkdirs();
        }
        //保存文件到本地
        try {
            file.transferTo(descFile);
        }catch (Exception e){
            e.printStackTrace();
            return "upload failure";
        }
        return "upload success";
    }
}

3.3测试

4.多文件上传

4.1前端页面,通过js动态添加input

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>多文件上传</title>
    </head>
    <body>
        <h1>文件上传</h1>
            <button onclick="addinput()">增加上传文件</button><br>
        <form id="form" method="post" enctype="multipart/form-data" action="/mulupload">
            <input type="submit" value="上传"><br>
            请选择文件:<br>
            <input type="file" name="file"><br>
        </form>
        <script type="text/javascript">
            <!--动态添加文件函数-->
            function addinput() {
                var form=document.getElementById("form");
                var input= document.createElement("input");
                var br= document.createElement("br");
                input.setAttribute("name","file");
                input.setAttribute("type","file");
                form.appendChild(input);
                form.appendChild(br);
            }
        </script>
    </body>
</html>

4.2后台处理

@Controller
public class MulUploadController {
    @RequestMapping("/tomulupload")
    public String toMulUpload(){
        return "mulupload";
    }

    @RequestMapping("/mulupload")
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile[] files){
            //判断文件是否为空
        if (files==null||files.length==0){
            return "please choices a file";
        }
        Calendar calendar=Calendar.getInstance();
        String rootPath="E:\\upload";
        //创建年月文件夹
        File dateDirs=new File(rootPath+File.separator+calendar.get(Calendar.YEAR)
                +File.separator+(calendar.get(Calendar.MONTH)+1));
        if (!dateDirs.exists()){
            dateDirs.mkdirs();
        }

        for (MultipartFile file : files) {
             if (file.isEmpty()){continue;}
            //目标文件
            File descFile=new File(dateDirs
                    +File.separator+file.getOriginalFilename());
            //保存文件到本地
            try {
                file.transferTo(descFile);
            }catch (Exception e){
                e.printStackTrace();
                return "upload failure";
            }
        }
        return "upload success";
    }
}

4.3 测试

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值