前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot实现文件上传

Spring Boot实现文件上传

作者头像
itlemon
发布2020-04-03 16:11:03
6410
发布2020-04-03 16:11:03
举报
文章被收录于专栏:深入理解Java深入理解Java

一、文件上传的配置

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

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

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

二、编写文件上传的Controller

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

代码语言:javascript
复制
<form method="POST" enctype="multipart/form-data" action="/index/fileupload">

    文件:<input type="file" name="lemonFile"/>

    <input type="submit" value="上传"/>

</form>

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

代码语言:javascript
复制
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 "上传失败";
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、文件上传的配置
  • 二、编写文件上传的Controller
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档