Storing in disk and storing in MySQL has its on caveats. Here is good discussion about it.
To store it in file system you can use Commons File Upload. Here is a sample
pom.xml
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${release.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${release.version}</version>
</dependency>
JSP
<h2>Spring MVC file upload example</h2>
<form method="POST" action="<c:url value='/upload' />"
enctype="multipart/form-data">
Please select a file to upload : <input type="file" name="file" />
<input type="submit" value="upload" />
</form>
Controller
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFormUpload(
@RequestParam("file") MultipartFile file) throws IOException{
if (!file.isEmpty()) {
BufferedImage src = ImageIO.read(new ByteArrayInputStream(file.getBytes()));
File destination = new File("File directory with file name") // something like C:/Users/tom/Documents/nameBasedOnSomeId.png
ImageIO.write(src, "png", destination);
//Save the id you have used to create the file name in the DB. You can retrieve the image in future with the ID.
}
}
And define this in your application context
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
I hope this helps.