Upload File Using JSP/HTML, Spring Boot

Uploading a file with Spring boot application and using Jsp/HTML  page.

Project Structure


Step 1 : - Now first configure pom.xml file.

<?xml version="1.0" encoding="UTF-8"?>
<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>2.1.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>fileupload</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>file upload</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- JSP Integration -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- Auto restarting tomcat server  -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>


Step 2 : Point controller page using main class of spring boot.

package com.example.file.upload;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
/*
 * @EnableAutoConfiguration(exclude = { ErrorMvcAutoConfiguration.class }) // use this annotaion if getting error   "Whitelabel Error Page"
 * 
 */

@ComponentScan("com.example.file.upload")
public class FileUploadApplication {

public static void main(String[] args) {
SpringApplication.run(FileUploadApplication.class, args);
}
}

Step 3 - Create HomeController or whatever name want to give this.

package com.example.file.upload;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class HomeController {
@RequestMapping("/")
public String indexPage() {
return "index.html";
}
@RequestMapping("/hi")
public  @ResponseBody String hi() {
return "hiii";
}
@RequestMapping("/upload")
public  @ResponseBody String uploadFile(MultipartFile file) {
return "hiii upload called ";
}
}


Step 4 :  Create index.html file. 

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>File Upload Example in JSP and Servlet - Java web
application</title>
</head>

<body>
<div>
<h3>Choose File to Upload in Server</h3>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" /> <input type="submit"
value="upload" />
</form>
</div>

</body>
</html>

Now here project will run and will start upload file and can be reached till controller and print message.

But is file size is big then it will give error : 

    org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.



Step 5 : Now add below properties to application.properties file : 


spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB


I set the size for 10MB, it can be changed according to file size.


If file size is set to application.properties file then no need to add @EnableAutoConfiguration(exclude = { ErrorMvcAutoConfiguration.class }) to controller. 








Post a Comment

Previous Post Next Post