使用SpringBoot 来完成文件上传相关, 此处为上传到本地
1 application.prperties中引入文件配置信息, 此处为SpringBoot 1.x版本
# MULTIPART (MultipartProperties)
spring.http.multipart.enabled=true
#spring.http.multipart.location=/tmp/xunwu/images/
spring.http.multipart.file-size-threshold=10MB
# 设置单个文件的大小
spring.http.multipart.maxFileSize = 10Mb
spring.http.multipart.max-request-size=20MB
2编写一个config: WebFileUploadConfig
package com.kason.kasonpro.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.web.MultipartProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;
import org.springframework.web.servlet.DispatcherServlet;
import javax.servlet.MultipartConfigElement;
import javax.servlet.Servlet;
@Configuration
@ConditionalOnClass({Servlet.class, StandardServletMultipartResolver.class, MultipartConfigElement.class})
@ConditionalOnProperty(prefix = "spring.http.multipart", name = "enabled", matchIfMissing = true)
@EnableConfigurationProperties(MultipartProperties.class)
public class WebFileUploadConfig {
private final MultipartProperties multipartProperties;
public WebFileUploadConfig(MultipartProperties multipartProperties) {
this.multipartProperties = multipartProperties;
}
/**
* 上传配置
*/
@Bean
@ConditionalOnMissingBean
public MultipartConfigElement multipartConfigElement() {
return this.multipartProperties.createMultipartConfig();
}
/**
* 注册解析器
*/
@Bean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME)
@ConditionalOnMissingBean(MultipartResolver.class)
public StandardServletMultipartResolver multipartResolver() {
StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();
multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily());
return multipartResolver;
}
}
3 controller中:
private final static String TEST_PATH = "D:\\gitwork\\kason-pro\\kason-pro\\src\\main\\resources\\test\\";
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
if (file.isEmpty()) {
redirectAttributes.addFlashAttribute("message", "请选择上传一个文件");
}
try {
byte[] bytes = file.getBytes();
Path path = Paths.get(TEST_PATH + file.getOriginalFilename());
Files.write(path, bytes);
redirectAttributes.addFlashAttribute("message", "上传 " + file.getOriginalFilename() + "success");
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:/uploadResult";
}
@GetMapping("/uploadResult")
public String uploadResult() {
return "uploadResult";
}
4 前端html页面:
upload.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>ThinkingInGIS</h1> <br/>
<h1>Spring Boot 文件上传示例</h1>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="file" /><br/><br/>
<input type="submit" value="上传" />
</form>
</body>
</html>
uploadResult.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Spring Boot - 上传状态</h1>
<div th:if="${message}">
<h2 th:text="${message}"></h2>
</div>
</body>
5 测试--使用PostMan测试:
post upload接口测试
返回结果:
返回结果









网友评论