1.概述

本快速教程主要介绍如何使用Spring的RestTemplate上传一个多部分文件。

我们将会看到两个一个文件和多个文件-上传使用创建RestTemplate。

2.什么是HTTP多部分请求?

简单地说,基本的HTTP POST请求体以名称/值对的形式保存表单数据。

另一方面,HTTP客户端可以构造HTTP多部分请求向服务器发送文本或二进制文件;主要用于上传文件。

另一个常见的用例是发送带有附件的电子邮件。多部分文件请求将一个大文件分解成更小的块,并使用边界标记来指示块的开始和结束。

了解更多关于多部分请求的信金宝搏官网188be息在这里

3.Maven的依赖

对于客户端应用程序来说,这个单一的依赖关系就足够了:

<依赖> < groupId > org。springframework < / groupId > < artifactId > spring web < / artifactId > <版本> 5.2.2。依赖版本< / > < / >

4.文件上传服务器

文件服务器API公开了两个用于分别上传单个和多个文件的REST端点:

  • POST /服务器/ singlefileupload /
  • POST /服务器/ multiplefileupload /

5.上传单个文件

首先,让我们看看控件上传单个文件创建RestTemplate。

我们需要创建HttpEntity有标题和正文。设置内容类型头的价值MediaType。MULTIPART_FORM_DATA。设置了这个标题后,创建RestTemplate自动封送文件数据和一些元数据。

元数据包括文件名、文件大小和文件内容类型(例如文本/平原):

HttpHeaders = new HttpHeaders();headers.setContentType (MediaType.MULTIPART_FORM_DATA);

接下来,将请求主体构建为LinkedMultiValueMap类。LinkedMultiValueMap包装LinkedHashMap为每个键存储多个值LinkedList

在我们的例子中getTestFile ()方法动态生成一个虚拟文件,并返回FileSystemResource:

MultiValueMap body = new LinkedMultiValueMap<>();的身体。添加(“文件”,getTestFile ());

最后,构造一个HttpEntity实例,该实例包装标题和主体对象并使用创建RestTemplate

注意,单个文件上传指向/服务器/ singlefileupload /端点。

最后,电话创建restTemplate。postForEntity ()完成连接到给定URL并将文件发送到服务器的工作:

HttpEntity> requestEntity = new HttpEntity<>(body, headers);String serverUrl = "http://localhost:8082/spring-rest/fileserver/singlefileupload/";RestTemplate RestTemplate = new RestTemplate();响应实体 response = restTemplate .postForEntity(serverUrl, requestEntity, String.class);

6.上传多个文件

在多个文件上传中,与单个文件上传相比,惟一的变化是构造请求体。

让我们创建多个文件和用相同的键添加它们MultiValueMap

显然,请求URL应该指向多个文件上传的端点:

MultiValueMap body = new LinkedMultiValueMap<>();Body.add(“文件”,getTestfile());Body.add(“文件”,getTestfile());Body.add(“文件”,getTestfile());HttpEntity> requestEntity = new HttpEntity<>(body, headers);string serverURL =“http:// localhost:8082 / spring-rest / fileserver / multifileupload /”;RestTemplate RestTemplate = new RestTemplate();响应实体 response = restTemplate .postForEntity(serverUrl, requestEntity, String.class);

总是有可能的使用多文件上传模型单文件上传。

7.结论

总之,我们看到了MultipartFile使用Spring转移创建RestTemplate

与往常一样,示例客户机和服务器源代码是可用的在github上

通用的底部

开始使用Spring 5和Spring Boot 2,通过学习的春天课程:

>>看看这个课程
对这篇文章的评论关闭!