您的位置:首页 > 编程语言 > Java开发

Spring Boot实现文件上传

2017-11-22 13:44 274 查看

一、文件上传的配置

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 "上传失败";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息