开发手册 欢迎您!
软件开发者资料库

Spring MVC - 文件上传示例

Spring MVC文件上传示例 - 从基本到高级概念的简单简单步骤学习Java Spring Framework 4.1.6版,其中包括概述,环境设置,控制反转(IoC),依赖注入,bean范围,bean生命周期,内部bean,自动装配,不同模块,面向方面编程(AOP),数据库访问(JDBC),事务管理,Web MVC框架,Web流,异常处理,EJB集成和发送电子邮件等。

以下示例说明如何在使用Spring Web MVC框架的表单中使用文件上载控件.首先,让我们使用一个可用的Eclipse IDE,并遵循以下步骤,使用Spring Web Framework开发基于动态表单的Web应用程序.

Step描述
1在com.it1352包下创建一个名为HelloWeb的项目,如Spring MVC  -  Hello World章.
2在com.it1352包下创建Java类FileModel,FileUploadController.
3在jsp子文件夹下创建视图文件fileUpload.jsp,success.jsp.
4在WebContent子文件夹下创建文件夹 temp .
5下载Apache Commons FileUpload库 commons-fileupload.jar 和Apache Commons IO库commons-io.jar .把它们放在你的CLASSPATH中.
6最后一步是创建源文件和配置文件的内容并导出应用程序,如下所述.

FileModel. java

package com.it1352; import org.springframework.web.multipart.MultipartFile;public class FileModel {   private MultipartFile file;   public MultipartFile getFile() {      return file;   }   public void setFile(MultipartFile file) {      this.file = file;   }}


FileUploadController.java

package com.it1352; import java.io.File;import java.io.IOException;import javax.servlet.ServletContext;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.util.FileCopyUtils;import org.springframework.validation.BindingResult;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class FileUploadController {   @Autowired   ServletContext context;    @RequestMapping(value = "/fileUploadPage", method = RequestMethod.GET)   public ModelAndView fileUploadPage() {      FileModel file = new FileModel();      ModelAndView modelAndView = new ModelAndView("fileUpload", "command", file);      return modelAndView;   }   @RequestMapping(value="/fileUploadPage", method = RequestMethod.POST)   public String fileUpload(@Validated FileModel file, BindingResult result, ModelMap model) throws IOException {      if (result.hasErrors()) {         System.out.println("validation errors");         return "fileUploadPage";      } else {                     System.out.println("Fetching file");         MultipartFile multipartFile = file.getFile();         String uploadPath = context.getRealPath("") + File.separator + "temp" + File.separator;         //Now do something with file...         FileCopyUtils.copy(file.getFile().getBytes(), new File(uploadPath+file.getFile().getOriginalFilename()));         String fileName = multipartFile.getOriginalFilename();         model.addAttribute("fileName", fileName);         return "success";      }   }}


HelloWeb-servlet.xml

                         


这里,对于第一个服务方法 fileUploadPage(),我们传递了一个空白 FileModel 对象在名为"command"的ModelAndView对象中,因为spring框架需要名为"command"的对象,如果您使用的是< form:form> JSP文件中的标记.因此,当调用 fileUploadPage()方法时,它返回 fileUpload.jsp 视图.

第二种服务方法 fileUpload将对 HelloWeb/fileUploadPage URL上的POST方法调用().您将根据提交的信息准备要上载的文件.最后,将从service方法返回一个"成功"视图,这将导致呈现success.jsp.

fileUpload.jsp

<%@ page contentType="text/html; charset = UTF-8" %><%@ taglib prefix = "form" uri = "http://www.springframework.org/tags/form"%>         File Upload Example                        Please select a file to upload :                            


这里,我们使用带有value ="fileUpload"的 modelAttribute 属性来将文件上传控件映射到服务器模型.

success.jsp

<%@ page contentType = "text/html; charset = UTF-8" %>         File Upload Example            FileName :       lt;b> ${fileName}  - Uploaded Successfully.   


完成创建源文件和配置文件后,导出应用程序.右键单击您的应用程序,使用 Export →  WAR文件选项并将HelloWeb.war文件保存在Tomcat的webapps文件夹中.

现在,启动Tomcat服务器并确保您能够从webapps访问其他网页使用标准浏览器的文件夹.尝试使用URL- http://localhost:8080/HelloWeb/fileUploadPage ,如果Spring Web Application的一切正常,我们将看到以下屏幕.

Spring File Upload

提交所需信息后,单击"提交"按钮提交表单.如果Spring Web Application的一切正常,您应该看到以下屏幕.

Spring文件上传结果