Spring MVC 如何上传多个文件到指定位置
2015-10-25 10:15
706 查看
Spring MVC 如何上传多个文件到指定位置
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句:太阳火神的美丽人生 - 本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
[align=center][/align]This is another complete Spring MVC tutorial which accepts file on Upload form and copy it to specificfolder on “Submit” event. As usual we have a
So, these are the additions / changes we need to perform in this example:New file: CrunchifyFileUploadController.java
New file: CrunchifyFileUpload.java
New file: uploadfile.jsp
New file: uploadfilesuccess.jsp
Modified file: crunchify-servlet.xml
2 new jar files:
Here is a final project structure so you will get some idea on where to add files.
CrunchifyFileUploadController.javaJava
uploadfilesuccess.jsp
After file upload you will see success message like this. You can always beautify your .jsp file the wayyou want.
List of all Spring MVC Examples, Java Examples.[align=left]Have anything to add to this article? Please chime in and join the conversion.[/align]SHARE ONTwitterFacebookGoogle+BufferPin ItFollow @Crunchify
Simplest Spring MVC Hello World Example / Tutorial – Spring Model – View – Controller Tips
How to use AJAX, jQuery in Spring Web MVC (.jsp) – Example
Working on Spring MVC Project? How to Report List of All Loaded Spring Beans during Startup?
How to Update Sparkline Graph Every 3 Seconds in Spring MVC (Realtime Update)
WordPress: How to Save Time on Files Upload
Spring MVC: Introduction to Spring 3 MVC Framework – Spring 4
Spring MVC: How to Access ModelMap Values in a JSP?
Read config.properties value using Spring ‘singleton’ Scope in your Java Enterprise Application
How to Sort List of Files based on Last Modified Time in Ascending and Descending?
Filed Under: Eclipse, Java Collection, Spring MVC TutorialsTagged: Controller, java, java spring mvc, java upload files, spring, Spring Architecture, spring framework, Spring MVC, Spring MVC JQuery Example, Upload Photos
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句:太阳火神的美丽人生 - 本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
Spring MVC Tutorial: How to Upload Multiple Files to Specific Location
SHORT LINK: Last Updated on February 10th, 2015 by Crunchify 22 Comments[align=center][/align]This is another complete Spring MVC tutorial which accepts file on Upload form and copy it to specificfolder on “Submit” event. As usual we have a
dependencyon Hello World Spring MVC Example.
So, these are the additions / changes we need to perform in this example:New file: CrunchifyFileUploadController.java
New file: CrunchifyFileUpload.java
New file: uploadfile.jsp
New file: uploadfilesuccess.jsp
Modified file: crunchify-servlet.xml
2 new jar files:
commons-io-2.4.jarand
commons-fileupload-1.3.jar
Here is a final project structure so you will get some idea on where to add files.
Now let’s get started:
Step1: Pre-Requisite:
http://crunchify.com/hello-world-example-spring-mvc-3-2-1/ (Deploy this project successfully onTomcat)Maven Dependencies:
Add below new dependencies to your project’spom.xmlfile.Add belwo to pom.xml file
12345678910 | <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.4</version> </dependency> |
Step2: SpringController
Create a Spring 3 MVC based controller which handles file upload. There are two methods in thiscontroller:crunchifyDisplayForm– It simply forwards request to the pageuploadfile.jsp
crunchifySave– Fetches the form using
@ModelAttributeannotation and get the File content from it. It creates a list of filenames of files being uploaded and pass this list to success page.
CrunchifyFileUploadController.javaJava
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | package com.crunchify.controller; import com.crunchify.form.CrunchifyFileUpload; import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List; import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.multipart.MultipartFile; @Controllerpublic class CrunchifyFileUploadController { @RequestMapping(value = "/upload", method = RequestMethod.GET) public String crunchifyDisplayForm() { return "uploadfile"; } @RequestMapping(value = "/savefiles", method = RequestMethod.POST) public String crunchifySave( @ModelAttribute("uploadForm") CrunchifyFileUpload uploadForm, Model map) throws IllegalStateException, IOException { String saveDirectory = "c:/crunchify/"; List<MultipartFile> crunchifyFiles = uploadForm.getFiles(); List<String> fileNames = new ArrayList<String>(); if (null != crunchifyFiles && crunchifyFiles.size() > 0) { for (MultipartFile multipartFile : crunchifyFiles) { String fileName = multipartFile.getOriginalFilename(); if (!"".equalsIgnoreCase(fileName)) { // Handle file content - multipartFile.getInputStream() multipartFile .transferTo(new File(saveDirectory + fileName)); fileNames.add(fileName); } } } map.addAttribute("files", fileNames); return "uploadfilesuccess"; }} |
Step3: Model – Form Object
[align=center][/align]Create a Java bean which acts as Model/Form object for our Spring application. This bean contains aListof
org.springframework.web.multipart.MultipartFileobjects. Spring framework provides a useful class MultipartFile which can be used to fetch the file content of uploaded file. Apart from its content, the MultipartFile object also gives you other useful information such as filename, file size etc.CrunchifyFileUpload.javaJava
1234567891011121314151617 | package com.crunchify.form; import java.util.List;import org.springframework.web.multipart.MultipartFile; public class CrunchifyFileUpload { private List<MultipartFile> crunchifyFiles; public List<MultipartFile> getFiles() { return crunchifyFiles; } public void setFiles(List<MultipartFile> files) { this.crunchifyFiles = files; }} |
Step4: JSP Views
Now create the view pages for this application. We will need two JSPs, one to display file upload form and another to show result on successful upload.Theuploadfile.jspdisplays a form with file input. Apart from this we have added small jquery snippetonclick of Add button. This will add a new file input component at the end of form. This allows user toupload as many files as they want.Note that we have set
enctype=”multipart/form-data”attribute of our
<form>tag.uploadfile.jsp
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%><html><head><title>Crunchify - Spring MVC Upload Multiple Files Example</title><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script><script> $(document) .ready( function() { //add more file components if Add is clicked $('#addFile') .click( function() { var fileIndex = $('#fileTable tr') .children().length - 1; $('#fileTable') .append( '<tr><td>' + ' <input type="file" name="files['+ fileIndex +']" />' + '</td></tr>'); }); });</script><style type="text/css">body { background-image: url('http://cdn3.crunchify.com/wp-content/uploads/2013/03/Crunchify.bg_.300.png');}</style></head><body> <br> <br> <div align="center"> <h1>Crunchify - Spring MVC Upload Multiple Files Example</h1> <form:form method="post" action="savefiles.html" modelAttribute="uploadForm" enctype="multipart/form-data"> <p>Select files to upload. Press Add button to add more file inputs.</p> <table id="fileTable"> <tr> <td><input name="files[0]" type="file" /></td> </tr> <tr> <td><input name="files[1]" type="file" /></td> </tr> </table> <br /> <input type="submit" value="Upload" /> <input id="addFile" type="button" value="Add File" /> </form:form> <br /> </div></body></html> |
1234567891011121314151617181920212223242526272829303132333435363738 | <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><html><head><title>Crunchify - Upload Multiple Files Example</title><style type="text/css">body { background-image: url('http://cdn3.crunchify.com/wp-content/uploads/2013/03/Crunchify.bg_.300.png');}</style></head><body> <br> <br> <div align="center"> <h1>Crunchify - Spring MVC Upload Multiple Files Example</h1> <p>Awesome.. Following files are uploaded successfully.</p> <ol> <c:forEach items="${files}" var="file"> - ${file} <br> </c:forEach> </ol> <a href="http://localhost:8080/CrunchifySpringMVC3.2.1/upload.html"><input type="button" value="Go Back" /></a> <br /> <br /> <br /> <div style="font-family: verdana; line-height: 25px; padding: 5px 10px; border-radius: 10px; border: 1px dotted #A4A4A4; width: 50%; font-size: 12px;"> Spring MVC Upload Multiple Files Example by <a href='http://crunchify.com'>Crunchify</a>. Click <a href='http://crunchify.com/category/java-web-development-tutorial/'>here</a> for all Java, Spring MVC, Web Development examples.<br> </div> </div></body></html> |
Step5: Update Spring Configuration
Add below bean tocrunchify-servlet.xmlfile, just above
<beanid="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">line.
12 | <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> |
Step6: Checkout Result
Start tomcat and point your browser to this URL: http://localhost:8080/CrunchifySpringMVC3.2.1/upload.html and you should see screen similar tothis.After file upload you will see success message like this. You can always beautify your .jsp file the wayyou want.
List of all Spring MVC Examples, Java Examples.[align=left]Have anything to add to this article? Please chime in and join the conversion.[/align]SHARE ONTwitterFacebookGoogle+BufferPin ItFollow @Crunchify
Some more articles you might also be interested in …
Spring MVC: How to Declare a Bean in Spring Application?Simplest Spring MVC Hello World Example / Tutorial – Spring Model – View – Controller Tips
How to use AJAX, jQuery in Spring Web MVC (.jsp) – Example
Working on Spring MVC Project? How to Report List of All Loaded Spring Beans during Startup?
How to Update Sparkline Graph Every 3 Seconds in Spring MVC (Realtime Update)
WordPress: How to Save Time on Files Upload
Spring MVC: Introduction to Spring 3 MVC Framework – Spring 4
Spring MVC: How to Access ModelMap Values in a JSP?
Read config.properties value using Spring ‘singleton’ Scope in your Java Enterprise Application
How to Sort List of Files based on Last Modified Time in Ascending and Descending?
Filed Under: Eclipse, Java Collection, Spring MVC TutorialsTagged: Controller, java, java spring mvc, java upload files, spring, Spring Architecture, spring framework, Spring MVC, Spring MVC JQuery Example, Upload Photos
Enjoyed this post?
Be sure to subscribe to the Crunchify newsletter and get regular updates about awesomeposts just like this one and more! Join more than 13000 subscribers!Enter your emailaddress...相关文章推荐
- struts 下载中文名文件
- java eclipse初次使用前的配置技巧汇总
- Spring @Transactional使用的示例
- Spring学习笔记之aop动态代理(3)
- Spring学习笔记之aop动态代理(3)
- Java编程中二维数组的初始化和基本操作实例
- Gradle Plugin Samples 之 Gradle Eclipse Compatible (三)
- eclipse用华为手机调试,用file explorer 打开data/data下的包名导出数据库
- struts2中action的XXX_* metend={1}
- 早晨起来看了看流的概念,又搞出乱码了-.-! 最后解决了。
- struts中关于action的通配符的使用
- java线程池使用
- Java 笔试:算法笔记
- Spring MVC 4.2.2 中最好的集成静态资源的方法
- Java多线程的使用
- eclipse转MyEclipse
- 大四狗:我的java历程(续)
- Java语言基础之多态
- java的接口
- 我遇到的cookie 中文乱码