Spring Boot实现文件上传

来源:互联网 发布:java并发编程 用途 编辑:程序博客网 时间:2024/05/22 15:49

一、文件上传的配置

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 "上传失败";    }}
原创粉丝点击