一:服务端
pom.xml
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>1.3.3.RELEASE</version>
- </parent>
-
- <groupId>com.test.spring</groupId>
- <artifactId>spring-boot</artifactId>
- <version>1.0.0</version>
- <packaging>jar</packaging>
-
- <name>spring-boot</name>
- <url>http://maven.apache.org</url>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.4</version>
- </dependency>
- </dependencies>
-
- </project>
- package com.test.spring;
-
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
-
- import javax.servlet.MultipartConfigElement;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.Part;
-
- import org.apache.commons.io.IOUtils;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
- import org.springframework.boot.context.embedded.MultipartConfigFactory;
- import org.springframework.context.annotation.Bean;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- @Controller
- @EnableAutoConfiguration
- public class FileUploadController
- {
- @RequestMapping(value="/upload", method=RequestMethod.POST)
- @ResponseBody
- public String upload(HttpServletRequest request) throws Exception
- {
- Part part = request.getPart("uploadfile");
-
- InputStream input = part.getInputStream();
-
- OutputStream output = new FileOutputStream("d:/tmp/" + part.getSubmittedFileName());
- IOUtils.copy(input, output);
-
- output.close();
- input.close();
-
- return "OK";
- }
-
- @Bean
- MultipartConfigElement createMultipartConfigElement()
- {
- MultipartConfigFactory mcf = new MultipartConfigFactory();
- /**
- * 设置最大上传文件的大小,默认是10MB
- */
- mcf.setMaxFileSize("50MB");
- return mcf.createMultipartConfig();
- }
-
- public static void main(String[] args) throws Exception {
- SpringApplication.run(FileUploadController.class, args);
- }
- }
注意:spring-boot-starter-web 1.3.3.RELEASE 依赖的servlet是3.1
二:客户端
客户端使用httpclient调用
先配置maven依赖
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.5.2</version>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpmime</artifactId>
- <version>4.5.2</version>
- </dependency>
测试代码
- package com.test.upload;
-
- import java.io.File;
-
- import org.apache.http.HttpEntity;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.entity.mime.MultipartEntityBuilder;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClients;
- import org.apache.http.util.EntityUtils;
-
- public class HttpUpload
- {
- public static void main(String[] args)throws Exception
- {
- String url = "http://127.0.0.1:8080/upload";
- CloseableHttpClient client = HttpClients.createDefault();
-
- HttpPost httppost = new HttpPost(url);
-
- MultipartEntityBuilder builder = MultipartEntityBuilder.create();
- builder.addBinaryBody("uploadfile", new File("D:/develop/apache-karaf-3.0.4.zip"));
-
- HttpEntity reqEntity = builder.build();
-
- httppost.setEntity(reqEntity);
-
- CloseableHttpResponse resp = client.execute(httppost);
-
- String str = EntityUtils.toString(resp.getEntity());
- System.out.println(str);
-
- resp.close();
- client.close();
- }
- }