美文网首页
Spring Boot实现文件上传

Spring Boot实现文件上传

作者: 泪已沾襟化作鸿 | 来源:发表于2017-11-22 13:44 被阅读0次

    一、文件上传的配置

    Spring Boot默认支持文件上传,对文件上传支持友好。对上传进行配置如下:

    # 配置上传参数
    spring:  
        http:
            multipart:
              enabled: true # 默认支持文件上传
              file-size-threshold: 0 # 支持文件写入磁盘
              max-file-size: 50MB # 最大文件上传大小
              max-request-size: 100MB  # 最大支持请求大小
    

    Spring Boot默认支持文件上传,enabled这个可以不用配置,默认支持将文件写入磁盘,默认最大文件大小是1MB,默认最大请求大小是10MB,后面两个参数常常需要自己重新配置才能达到要求。

    二、编写文件上传的Controller

    前端页面的上传模块可以按照如下编写:

    <form method="POST" enctype="multipart/form-data" action="/index/fileupload">
    
        文件:<input type="file" name="lemonFile"/>
    
        <input type="submit" value="上传"/>
    
    </form>
    

    注意:表单中方法必须是POST,enctype和action都必须设置。
    文件上传的Controller如下:

    package com.lemon.springboot.controller;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.UUID;
    
    /**
     * @author lemon
     */
    @Controller
    @RequestMapping("/index")
    public class IndexController {
    
        private static final Logger logger = LoggerFactory.getLogger(IndexController.class);
    
        @RequestMapping
        public String index() {
            logger.info("访问主页");
            return "index";
        }
    
        @RequestMapping(value = "/fileupload", method = RequestMethod.POST)
        @ResponseBody
        public String upload(@RequestParam("lemonFile") MultipartFile file) {
            logger.info("文件上传方法访问成功");
            if (file.isEmpty()) {
                return "文件上传失败";
            }
            // 获取文件名
            String originalFilename = file.getOriginalFilename();
            logger.info("上传文件的文件名是:" + originalFilename);
    
            // 获取文件后缀名
            String suffixName = originalFilename.substring(originalFilename.lastIndexOf("."));
            logger.info("上传文件的后缀名是:" + suffixName);
    
            // 设置文件上传绝对路径
            String filePath = "/Users/lemon/IdeaProjects/springboot/upload/";
    
            // 获取UUID名称
            String fileName = UUID.randomUUID() + suffixName;
    
            // 获取上传文件的File对象
            File dest = new File(filePath + fileName);
    
            // 开始上传
            if (!dest.getParentFile().exists()) {
                dest.getParentFile().mkdirs();
            }
            try {
                file.transferTo(dest);
                logger.info("上传成功");
                return "上传成功";
            } catch (IllegalStateException | IOException e) {
                e.printStackTrace();
                logger.info(e.getMessage());
            }
            return "上传失败";
        }
    }
    

    相关文章

      网友评论

          本文标题:Spring Boot实现文件上传

          本文链接:https://www.haomeiwen.com/subject/eyinvxtx.html