Utiliser le téléchargement de fichiers dans Springboot

1: Introduction au téléchargement de fichiers springMVC

Parmi les 9 composants principaux de springMVC , l'un d'entre eux est MultipartResolverle composant d'analyse de téléchargement de fichier. Lorsque le composant est une demande de téléchargement de fichier, la classe HttpServletRequest sera analysée et générée en tant que classe MultipartHttpServletRequest. Cette classe hérite de HttpServletRequest tout en implémentant également le MultipartRequestcode source de l' interface est la suivante:

public interface MultipartRequest {
    
    

	Iterator<String> getFileNames();

	@Nullable
	MultipartFile getFile(String name);

	List<MultipartFile> getFiles(String name);

	Map<String, MultipartFile> getFileMap();

	MultiValueMap<String, MultipartFile> getMultiFileMap();
	
	@Nullable
	String getMultipartContentType(String paramOrFileName);

}

Vous pouvez voir qu'il existe de nombreuses méthodes liées aux fichiers définies dans l'interface, donc MultipartHttpServletRequest l'a 操作文件的能力. Pour l'interface MultipartResolver, il existe deux classes d'implémentation, l'une est CommonMultipartResolver, l'autre est StandardServletMultipartResolver, car la première doit s'appuyer sur le package tiers d'apache, et la seconde n'a besoin que de l'API servlet, donc en utilisation réelle, StandardMultipartResolver est utilisé Suite. Par conséquent, pour terminer l'opération de téléchargement de fichier, tant qu'il est capable de créer un StandardMultipartResolver, et dans springboot, lorsque l'analyseur de fichier de téléchargement n'est pas spécifié, c'est le StandardMultipartResolver qui est créé. Le code source créé automatiquement est le suivant:

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass({
    
     Servlet.class, StandardServletMultipartResolver.class, MultipartConfigElement.class })
@ConditionalOnProperty(prefix = "spring.servlet.multipart", name = "enabled", matchIfMissing = true)
@ConditionalOnWebApplication(type = Type.SERVLET)
@EnableConfigurationProperties(MultipartProperties.class)
public class MultipartAutoConfiguration {
    
    
	@Bean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME)
	@ConditionalOnMissingBean(MultipartResolver.class)
	public StandardServletMultipartResolver multipartResolver() {
    
    
		StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();
		multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily());
		return multipartResolver;
	}
}

2: Configurer les paramètres du fichier de téléchargement

### 配置springboot自动生成StandardMultipartResolver对象设置开始 ###
# 指定文件上传文件夹
spring.servlet.multipart.location=/Users/xb/Desktop/D/dongsir-dev/test-jsp-in-springboot
# 限制单个文件的大小 5M
spring.servlet.multipart.max-file-size=5242880
# 限制所有文件的最大大小
spring.servlet.multipart.max-request-size=20MB
### 配置springboot自动生成StandardMultipartResolver对象设置结束 ###

3 : jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
    <form method="post" action="./request" enctype="multipart/form-data">
        <input type="file" name="file" value="请选择要上传文件">
        <input type="submit" value="提交">
    </form>
</body>
</html>

4: interface Jump jsp

@RequestMapping("/upload/page")
public String uploadPage() {
    
    
    return "upload";
}

5: demande de téléchargement d'interface

HttpServletRequest est utilisé directement comme paramètre ici, et vous pouvez également utiliser la méthode de javax.servlet.http.Partpassage direct write. Il s'agit de l'interface fournie dans l'API de servlet, et vous pouvez également l'utiliser org.springframework.web.multipart.MultipartFile. Ceci est fourni par spring. Cette transfterTométhode peut être utilisée directement . Le code source est le suivant:

@RequestMapping("/upload/request")
public Map<String, Object> uploadRequest(HttpServletRequest request) {
    
    
    Map<String, Object> res = new HashMap<>();
    MultipartHttpServletRequest multipartHttpServletReq = null;
    if (request instanceof MultipartHttpServletRequest) {
    
    
        multipartHttpServletReq = (MultipartHttpServletRequest) request;
        MultipartFile multipartFile = multipartHttpServletReq.getFile("file");
        String originalFilename = multipartFile.getOriginalFilename();
        res.put("上传文件名", originalFilename);
        res.put("上传结果", "成功");
        try {
    
    
            File file = new File(originalFilename);
            multipartFile.transferTo(file);
        } catch (Exception e) {
    
    }
        return res;
    } else {
    
    
        res.put("result", "不是文件上传请求");
        return res;
    }
}

6: test de téléchargement

Visitez simplement et http://localhost:8089/testBean/upload/pagesélectionnez le fichier à télécharger.

Je suppose que tu aimes

Origine blog.csdn.net/wang0907/article/details/113095900
conseillé
Classement