SpringBoot 8-1 文件上传

2018-11-03  本文已影响9人  kason_zhang

使用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接口测试

返回结果:


返回结果
上一篇 下一篇

猜你喜欢

热点阅读