diff --git a/spring-rest-template/.gitignore b/spring-rest-template/.gitignore
new file mode 100644
index 0000000000..afdfaa6ded
--- /dev/null
+++ b/spring-rest-template/.gitignore
@@ -0,0 +1,14 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+*/.idea/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
\ No newline at end of file
diff --git a/spring-rest-template/README.md b/spring-rest-template/README.md
new file mode 100644
index 0000000000..bf35f0d32c
--- /dev/null
+++ b/spring-rest-template/README.md
@@ -0,0 +1,4 @@
+## Spring REST Template Example Project
+
+### The Course
+The "REST With Spring" Classes: http://bit.ly/restwithspring
diff --git a/spring-rest-template/checkstyle.xml b/spring-rest-template/checkstyle.xml
new file mode 100644
index 0000000000..85063a7570
--- /dev/null
+++ b/spring-rest-template/checkstyle.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-rest-template/pom.xml b/spring-rest-template/pom.xml
new file mode 100644
index 0000000000..fa93308cf5
--- /dev/null
+++ b/spring-rest-template/pom.xml
@@ -0,0 +1,83 @@
+
+ 4.0.0
+ com.baeldung
+ spring-rest-template
+ 0.1-SNAPSHOT
+ spring-rest-template
+ jar
+
+
+ parent-boot-2
+ com.baeldung
+ 0.0.1-SNAPSHOT
+ ../parent-boot-2
+
+
+
+
+
+
+ org.springframework
+ spring-web
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+
+
+ spring-rest-template
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ ${checkstyle-maven-plugin.version}
+
+ checkstyle.xml
+
+
+
+
+ check
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ 3
+ true
+
+ **/*IntegrationTest.java
+ **/*LongRunningUnitTest.java
+ **/*ManualTest.java
+ **/*LiveTest.java
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ ${checkstyle-maven-plugin.version}
+
+ checkstyle.xml
+
+
+
+
+
+
+
+ 3.0.0
+
+
diff --git a/spring-rest-template/src/main/java/com/baeldung/web/upload/client/MultipartFileUploadClient.java b/spring-rest-template/src/main/java/com/baeldung/web/upload/client/MultipartFileUploadClient.java
new file mode 100644
index 0000000000..804013d4dc
--- /dev/null
+++ b/spring-rest-template/src/main/java/com/baeldung/web/upload/client/MultipartFileUploadClient.java
@@ -0,0 +1,62 @@
+package com.baeldung.web.upload.client;
+
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+public class MultipartFileUploadClient {
+
+ public static void main(String[] args) throws IOException {
+ uploadSingleFile();
+ uploadMultipleFile();
+ }
+
+ private static void uploadSingleFile() throws IOException {
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.MULTIPART_FORM_DATA);
+
+ MultiValueMap body = new LinkedMultiValueMap<>();
+ body.add("file", getTestFile());
+
+
+ HttpEntity> requestEntity = new HttpEntity<>(body, headers);
+ String serverUrl = "http://localhost:8082/spring-rest/fileserver/singlefileupload/";
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity response = restTemplate.postForEntity(serverUrl, requestEntity, String.class);
+ System.out.println("Response code: " + response.getStatusCode());
+ }
+
+ private static void uploadMultipleFile() throws IOException {
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.MULTIPART_FORM_DATA);
+
+ MultiValueMap body = new LinkedMultiValueMap<>();
+ body.add("files", getTestFile());
+ body.add("files", getTestFile());
+ body.add("files", getTestFile());
+
+ HttpEntity> requestEntity = new HttpEntity<>(body, headers);
+ String serverUrl = "http://localhost:8082/spring-rest/fileserver/multiplefileupload/";
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity response = restTemplate.postForEntity(serverUrl, requestEntity, String.class);
+ System.out.println("Response code: " + response.getStatusCode());
+ }
+
+ public static Resource getTestFile() throws IOException {
+ Path testFile = Files.createTempFile("test-file", ".txt");
+ System.out.println("Creating and Uploading Test File: " + testFile);
+ Files.write(testFile, "Hello World !!, This is a test file.".getBytes());
+ return new FileSystemResource(testFile.toFile());
+ }
+
+}