SpringMVC技术上传文件的源代码
2016-08-03 16:51
447 查看
这里一定要注意上传的路径!作者本人由于粗心大意,一直忘记新建一个空的upload文件夹,导致上传失败,找不到问题根源所在!终于恍然大悟!
项目中用到的jar包
![](https://img-blog.csdn.net/20160803165014777)
这是applicationContext.xml的配置文件内容
src文件内容
web.xml配置文件
WEB-INF下jsp文件中的两个.jsp文件
ok.jsp
upload.jsp
项目中用到的jar包
这是applicationContext.xml的配置文件内容
<?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:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 将Controller或DAO等组件扫描到Spring容器 --> <context:component-scan base-package="org.tarena"/> <!-- 定义@RequestMapping的支持 --> <mvc:annotation-driven/> <!-- 定义ViewResover --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"> </property> <property name="suffix" value=".jsp"> </property> </bean> <!-- 定义上传解析器,自动调用commons-fileupload.jar --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10240"> </property> <property name="resolveLazily" value="true"> </property> </bean> </beans>
src文件内容
package org.tarena.controller; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MaxUploadSizeExceededException; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; @Controller public class UploadController { @RequestMapping("/toUpload") public String toUpload(){ //进入upload.jsp return "upload"; } @RequestMapping("/upload") public String upload( @RequestParam("file") MultipartFile file, HttpServletRequest req,Model model) throws Exception{ //TODO 将file保存到upload文件夹位置 System.out.println("上传文件:"+file); //-----检查上传文件类型------- //1.file.getOriginalFilename(),截取扩展名 //2.判断是否允许该类型,不允许,跳转到upload.jsp, //带一个error消息出去,终止后面执行 //------------------- String path = req.getSession() .getServletContext() .getRealPath("upload"); String filePath = path+File.separatorChar +file.getOriginalFilename(); System.out.println(filePath); // try{ //写文件操作 InputStream fis = file.getInputStream(); FileOutputStream fos = new FileOutputStream( new File(filePath)); byte[] bbs = new byte[1024]; int len = -1; while(-1 != (len=fis.read(bbs))){ fos.write(bbs,0,len); } fos.close(); fis.close(); //将上传的文件放入模型,在ok显示 model.addAttribute("fname", file.getOriginalFilename()); return "ok";//进入ok.jsp // }catch(Exception ex){ // ex.printStackTrace(); // return "error";//进入错误error.jsp // } } @ExceptionHandler//处理Controller方法抛出的异常 public ModelAndView doException( Exception ex){ Map<String, Object> map = new HashMap<String, Object>(); if(ex instanceof MaxUploadSizeExceededException){ long maxSize = ((MaxUploadSizeExceededException)ex) .getMaxUploadSize(); map.put("error", "上传的文件太大,不能超过"+maxSize/1024+"K"); }else{ map.put("error", "上传失败"); } return new ModelAndView("upload",map); } }
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>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.from</url-pattern> </servlet-mapping> <filter> <filter-name>encodingfilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
WEB-INF下jsp文件中的两个.jsp文件
ok.jsp
<%@ page import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%> <html> <head> </head> <body> 上传成功! <a href="upload/${fname }">${fname }</a> </body> </html>
upload.jsp
<%@ page import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%> <html> <head> </head> <body> <font color="red">${error }</font> <form action="upload.from" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form> </body> </html>
相关文章推荐
- SpringMVC ajax技术无刷新文件上传下载删除示例
- SpringMVC ajax技术无刷新文件上传下载删除示例
- SpringMVC ajax技术无刷新文件上传下载删除示例
- SpringMVC 理论与有用技术(二)文件上传
- SpringMVC 理论与实用技术(二)文件上传
- 使用SpringMVC技术。实现文件的上传
- SpringMVC 理论与实用技术(二)文件上传
- springMVC上传多个文件
- SpringMVC使用js提交表单上传多文件,并如何防止表单自动提交
- SpringMVC multipart文件上传
- springmvc文件上传下载
- SpringMVC文件上传的两种方式
- springmvc实现web多文件上传
- SpringMVC实现文件上传下载
- XML技术上传文件XML技术
- springmvc--文件上传
- Springmvc上传文件request转换异常
- Java SpringMVC文件几种上传,附带fromdata文件加参数上传
- SpringMVC上传文件例子
- springMVC文件上传