1、添加相关依赖:

    1. <dependency>
    2. <groupId>commons-fileupload</groupId>
    3. <artifactId>commons-fileupload</artifactId>
    4. <version>1.3.2</version>
    5. </dependency>

    2、在 mvc.xml 中进行配置:

    1. <bean id="multipartResolver"
    2. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    3. <!--上传文件的最大大小-->
    4. <property name="maxUploadSize" value="17367648787"/>
    5. <!-- 设置文件放入临时文件夹的最大大小限制
    6. 此值是阈值,低于此值,保存在内存中,高于此值,生成在硬盘上的文件
    7. -->
    8. <property name="maxInMemorySize" value="4096"/>
    9. <!-- 上传文件的编码 -->
    10. <property name="defaultEncoding" value="UTF-8"/>
    11. </bean>

    或 java 配置类中进行配置:

    1. @Bean
    2. public CommonsMultipartResolver multipartResolver(){
    3. CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
    4. // 设置允许文件上传的最大尺寸
    5. multipartResolver.setMaxUploadSize(104857600L);
    6. // 设置文件放入临时文件夹的最大大小限制
    7. // 此值是阈值,低于此值,保存在内存中,高于此值,生成在硬盘上的文件
    8. multipartResolver.setMaxInMemorySize(4096);
    9. return multipartResolver;
    10. }

    3、实现文件上传:

    前端页面:

    1. <form action="/upload" enctype="multipart/form-data" method="post">
    2. 请选择文件:<input type="file" name="file">
    3. <input type="submit" value="上传">
    4. </form>

    控制器:

    1. @PostMapping(value = "/upload",produces = MediaType.MULTIPART_FORM_DATA_VALUE)
    2. public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
    3. boolean success = false;
    4. // 判断文件是否为空
    5. if (!file.isEmpty()) {
    6. // 获取项目根目录所在的绝对路径
    7. String path = request.getServletContext().getRealPath("/");
    8. // 设置上传的文件存放目录
    9. File uploadFile = new File(path + "/upload");
    10. // 判断文件目录是否存在,不存在则新建
    11. if (!uploadFile.exists()) {
    12. // 新建目录
    13. uploadFile.mkdir();
    14. }
    15. // 获取上传文件名
    16. String originalFilename = file.getOriginalFilename();
    17. // 获取上传文件的后缀
    18. String suffix = originalFilename.substring(originalFilename.indexOf("."));
    19. // 生成新文件名
    20. String filename = System.currentTimeMillis() + suffix;
    21. // 上传文件
    22. try {
    23. file.transferTo(new File(uploadFile, filename));
    24. success = true;
    25. } catch (IOException e) {
    26. e.printStackTrace();
    27. }
    28. }
    29. return "文件上传:" + success;
    30. }