下面为您详细讲解如何使用SpringMVC和Jersey实现跨服务器文件上传的完整攻略。
1. 环境准备
要使用SpringMVC和Jersey实现跨服务器文件上传需要先进行环境准备,包括以下两个方面:
1.1. 服务器环境
首先搭建需要搭建两个服务器,一个是文件上传的服务器,另一个是文件存储的服务器。其中文件上传服务器需要安装Tomcat和Jersey,文件存储服务器需要安装Nginx。
1.2. 代码环境
搭建完成服务器后,还需要进行代码编写。这里需要用到SpringMVC和Jersey,所以需要在pom.xml文件中引入下面的依赖:
<!-- SpringMVC依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Jersey依赖 -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>
2. 代码实现
完成了环境准备后,需要进行代码编写。下面是实现跨服务器文件上传的具体步骤:
2.1. 在上传服务器上,使用Jersey提供的FormDataMultiPart构造文件和参数
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload(@FormDataParam("file") InputStream fileInputStream,
@FormDataParam("file") FormDataContentDisposition fileMetaData,
@FormDataParam("param") String param) {
// 构造FormDataMultiPart
FormDataMultiPart form = new FormDataMultiPart();
ContentDisposition cd = ContentDisposition.type("form-data").fileName(fileMetaData.getFileName()).build();
FormDataBodyPart fdp = new FormDataBodyPart(cd, fileInputStream, MediaType.APPLICATION_OCTET_STREAM_TYPE);
form.bodyPart(fdp);
form.field("param", param);
return null;
}
2.2. 在上传服务器上,把FormDataMultiPart post到文件存储服务器
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource resource = client.resource("http://file-storage-server/upload");
ClientResponse response = resource.type(MediaType.MULTIPART_FORM_DATA).post(ClientResponse.class, form);
2.3. 在文件存储服务器上,使用Jersey提供的FormDataMultiPart接收并存储文件
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload(FormDataMultiPart form) {
FormDataBodyPart fdp = form.getField("file");
String fileName = fdp.getContentDisposition().getFileName();
InputStream is = fdp.getValueAs(InputStream.class);
// 存储文件
return null;
}
完成了代码编写后,需要把打好的war包部署到Tomcat服务器中进行测试。
3. 示例说明
这里提供两个示例,分别是:
3.1. 上传图片
在前端页面中,通过文件选择控件选择一张图片,然后点击上传按钮。后端接收到请求后,把图片和参数传给文件存储服务器,并在文件存储服务器上存储图片。存储成功后,返回文件的URL地址给前端页面展示。
3.2. 上传视频
与上传图片示例类似,只需在前端页面中使用选择视频文件并上传,后端就会把视频文件传给文件存储服务器并存储上传的视频。存储成功后,返回文件的URL地址给前端页面展示。
以上就是使用SpringMVC和Jersey实现跨服务器文件上传的完整攻略和两个示例的说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springMVC+jersey实现跨服务器文件上传 - Python技术站