SpringBoot项目中一到多个文件的上传(源码)

欢迎访问个人原创博客:德鲁大叔撸代码

几乎在所有的软件中都会有上传文件的需求,自己动手写一个在springboot项目中的文件上传功能
具体步骤如下:
一、引入依赖(基础依赖在父工程的pom文件中)

<dependencies>

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.8</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.27</version>
        </dependency>
        <!-- thymeleaf模板插件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

    </dependencies>

二、编写配置文件

server:
  port: 9999
  servlet:
    context-path: /
spring:
  thymeleaf:
    cache: false
  http:
    multipart:
      //单个文件的最大值
      maxFileSize: 1Mb
      //多个文件的最大值
      maxRequsetSize: 5Mb

三、文件上传的核心逻辑

@Controller
public class FileController {

    @RequestMapping("file")
    public String file(){
        return "file";
    }

    /**
     * 单文件上传
     * @param file
     * @return
     */
    @PostMapping("/upload")
    @ResponseBody
    public String fileUpload(@RequestParam("filename")MultipartFile file){
        if(file.isEmpty()){
            return "上传文件为空";
        }
        //上传文件的全路径
        String fileName = file.getOriginalFilename();
        int size = (int)file.getSize();
        System.err.println("文件大小为:"+size);
        //文件的上传路径
        String path = "D:/test";
        File dest = new File(path + "/" + fileName);
          if(!dest.getParentFile().exists()){
              dest.getParentFile().mkdir();
          }try {
              file.transferTo(dest);
              return  "上传成功";
        }catch (IllegalStateException  e){
              return "上传失败";
        }catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return "false";
        }

    }

    /**
     * 多文件上传
     * @param request
     * @return
     */
    @RequestMapping(value="multifileUpload",method=RequestMethod.POST)
    public @ResponseBody String multifileUpload(HttpServletRequest request) {

        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("fileName");

        if (files.isEmpty()) {
            return "上传文件为空";
        }

        String path = "D:/test";

        for (MultipartFile file : files) {
            String fileName = file.getOriginalFilename();
            int size = (int) file.getSize();
            System.out.println(fileName + "-->" + size);

            if (file.isEmpty()) {
                return "上传文件为空";
            } else {
                File dest = new File(path + "/" + fileName);
                if (!dest.getParentFile().exists()) {
                    dest.getParentFile().mkdir();
                }
                try {
                    file.transferTo(dest);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    return "上传失败";
                }
            }
        }
        return "上传成功";

    }
}

源码地址

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值