Spring MVC文件上传示例详解

本文概述

  • Spring MVC文件上传步骤(超出MVC)
  • Spring MVC文件上传示例
Spring MVC提供了一种上传文件的简便方法, 它可以是图像或其他文件。让我们看一个使用Spring MVC上传文件的简单示例。
所需的Jar文件 要运行此示例, 你需要加载:
  • Spring Core jar文件
  • Spring Web jar文件
  • commons-fileupload.jar和commons-io.jar文件
1)下载spring的所有jar文件, 包括core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm等。
2)下载commons-io.jar
3)下载commons-fileupload.jar
Spring MVC文件上传步骤(超出MVC) 【Spring MVC文件上传示例详解】1)添加commons-io和fileupload.jar文件
2)在spring-servlet.xml中添加CommonsMultipartResolver条目
< bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

3)创建表格以提交文件。方法名称必须为” post” , 并键入” multiple / form-data” 。
< form action="savefile" method="post" enctype="multipart/form-data"> Select File: < input type="file" name="file"/> < input type="submit" value="http://www.srcmini.com/Upload File"/> < /form>

4)在Controller中使用CommonsMultipartFile类。
@RequestMapping(value="http://www.srcmini.com/savefile", method=RequestMethod.POST) public ModelAndView upload(@RequestParam CommonsMultipartFile file, HttpSession session){ String path=session.getServletContext().getRealPath("/"); String filename=file.getOriginalFilename(); System.out.println(path+" "+filename); try{ byte barr[]=file.getBytes(); BufferedOutputStream bout=new BufferedOutputStream( new FileOutputStream(path+"/"+filename)); bout.write(barr); bout.flush(); bout.close(); }catch(Exception e){System.out.println(e); } return new ModelAndView("upload-success", "filename", path+"/"+filename); }

5)在JSP中显示图像。
< h1> Upload Success< /h1> < img src="http://www.srcmini.com/${filename}"/>

Spring MVC文件上传示例 创建图像目录
在你的项目中创建” 图像” 目录, 因为我们正在编写代码以将所有文件保存在” / images” 目录中。
index.jsp
< a href="http://www.srcmini.com/uploadform"> Upload Image< /a>

Emp.java
package com.srcmini; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.springframework.stereotype.Controller; 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.bind.annotation.RequestParam; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.servlet.ModelAndView; @Controller public class HelloController { private static final String UPLOAD_DIRECTORY ="/images"; @RequestMapping("uploadform") public ModelAndView uploadForm(){ return new ModelAndView("uploadform"); } @RequestMapping(value="http://www.srcmini.com/savefile", method=RequestMethod.POST) public ModelAndView saveimage( @RequestParam CommonsMultipartFile file, HttpSession session) throws Exception{ ServletContext context = session.getServletContext(); String path = context.getRealPath(UPLOAD_DIRECTORY); String filename = file.getOriginalFilename(); System.out.println(path+" "+filename); byte[] bytes = file.getBytes(); BufferedOutputStream stream =new BufferedOutputStream(new FileOutputStream( new File(path + File.separator + filename))); stream.write(bytes); stream.flush(); stream.close(); return new ModelAndView("uploadform", "filesuccess", "File successfully saved!"); } }

web.xml
< ?xml version="1.0" encoding="UTF-8"?> < web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> < servlet> < servlet-name> spring< /servlet-name> < servlet-class> org.springframework.web.servlet.DispatcherServlet< /servlet-class> < load-on-startup> 1< /load-on-startup> < /servlet> < servlet-mapping> < servlet-name> spring< /servlet-name> < url-pattern> /< /url-pattern> < /servlet-mapping> < /web-app>

spring-servlet.xml
在这里, 你需要为CommonsMultipartResolver创建一个bean。
< ?xml version="1.0" encoding="UTF-8"?> < beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> < context:component-scan base-package="com.srcmini"> < /context:component-scan> < bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> < property name="prefix" value="http://www.srcmini.com/WEB-INF/jsp/"> < /property> < property name="suffix" value="http://www.srcmini.com/.jsp"> < /property> < /bean> < bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> < /beans>

uploadform.jsp
这里的表单必须是method =” post” 和enctype =” multipart / form-data” 。
< %@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> < !DOCTYPE html> < html> < head> < title> Image File Upload< /title> < /head> < body> < h1> File Upload Example - srcmini< /h1> < h3 style="color:red"> ${filesuccess}< /h3> < form:form method="post" action="savefile" enctype="multipart/form-data"> < p> < label for="image"> Choose Image< /label> < /p> < p> < input name="file" id="fileToUpload" type="file" /> < /p> < p> < input type="submit" value="http://www.srcmini.com/Upload"> < /p> < /form:form> < /body> < /html>

输出
Spring MVC文件上传示例详解

文章图片
Spring MVC文件上传示例详解

文章图片
Spring MVC文件上传示例详解

文章图片
转到服务器控制台上打印的路径, 以查看上载的文件。
下载Spring MVC文件上传示例
我们已经在MyEclipse IDE中创建了该应用程序, 该应用程序已经提供了jar文件。如果你使用eclipse或其他IDE, 则需要为spring MVC加载jar文件。
下载此示例(使用MyEclipse开发)

    推荐阅读