1.创建java web项目:SpringMVCUploadDownFile

2.在项目的WebRoot下的WEB-INF的lib包下添加如下jar文件

  1. com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
  2. com.springsource.net.sf.cglib-2.2.0.jar
  3. com.springsource.org.aopalliance-1.0.0.jar
  4. com.springsource.org.apache.commons.fileupload-1.2.0.jar
  5. com.springsource.org.apache.commons.httpclient-3.1.0.jar
  6. com.springsource.org.apache.commons.lang-2.4.0.jar
  7. com.springsource.org.apache.commons.logging-1.1.1.jar
  8. com.springsource.org.apache.commons.pool-1.5.3.jar
  9. com.springsource.org.apache.log4j-1.2.15.jar
  10. com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
  11. com.springsource.org.codehaus.jackson.mapper-1.0.0.jar
  12. commons-dbcp.jar
  13. commons-fileupload-1.2.1.jar
  14. commons-io-2.0.jar
  15. jotm.jar
  16. ojdbc14.jar
  17. org.springframework.aop-3.0.1.RELEASE-A.jar
  18. org.springframework.asm-3.0.1.RELEASE-A.jar
  19. org.springframework.aspects-3.0.1.RELEASE-A.jar
  20. org.springframework.beans-3.0.1.RELEASE-A.jar
  21. org.springframework.context-3.0.1.RELEASE-A.jar
  22. org.springframework.core-3.0.1.RELEASE-A.jar
  23. org.springframework.expression-3.0.1.RELEASE-A.jar
  24. org.springframework.instrument-3.0.1.RELEASE-A.jar
  25. org.springframework.instrument.tomcat-3.0.1.RELEASE-A.jar
  26. org.springframework.jdbc-3.0.1.RELEASE-A.jar
  27. org.springframework.orm-3.0.1.RELEASE-A.jar
  28. org.springframework.oxm-3.0.1.RELEASE-A.jar
  29. org.springframework.transaction-3.0.1.RELEASE-A.jar
  30. org.springframework.web-3.0.1.RELEASE-A.jar
  31. org.springframework.web.portlet-3.0.1.RELEASE-A.jar
  32. org.springframework.web.servlet-3.0.1.RELEASE-A.jar
  33. org.springframework.web.struts-3.0.1.RELEASE-A.jar
  34. persistence.jar
  35. xapool.jar

项目中所需要的jar

3.在项目的WebRoot下的WEB-INF下添加springmvc-servlet.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  6. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context.xsd
  11. http://www.springframework.org/schema/mvc
  12. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  13. ">
  14. <!-- 一。SpringMVC链接数据库步骤 -->
  15. <!-- 1.mvc支持注解 -->
  16. <mvc:annotation-driven/>
  17. <!-- 2.全局扫描包 -->
  18. <context:component-scan base-package="com"/>
  19.  
  20. <!-- 3.驱动管理数据源 -->
  21. <!-- 4.数据源事务管理 -->
  22. <!-- 5.sqlsessionfactorybean -->
  23. <!-- 6.spring和mybatis整合,映射输入参数 -->
  24.  
  25. <!--二。 上传下载配置 -->
  26.  
  27. <!-- 1.springMVC上传文件时,需要配置CommonsMultipartResolver处理器 -->
  28. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  29. <!-- 设置默认的编码格式 -->
  30. <property name="defaultEncoding" value="UTF-8"/>
  31. <!-- 指定所上传文件的总的大小不能超过200kb,
  32. 注意maxUploadSize属性点 限制 不是针对单个文件,
  33. 而是所有文件的容量总和-->
  34. <property name="maxUploadSize" value="-1"/>
  35. </bean>
  36.  
  37. <!-- 2.springMVC在超出上传文件限制时,会抛出
  38. org.springframework.web.multipart.MaxUploadSizeExceededException
  39. 该异常时SpringMVC在检查上传文件信息时抛出来的,而且此时还没有进入到Controller方法中
  40. -->
  41. <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  42. <property name="exceptionMappings">
  43. <props>
  44. <!-- 在遇到MaxUploadSizeExceededException异常时,自动跳到xxx面 -->
  45. <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error.jsp</prop>
  46. </props>
  47. </property>
  48. </bean>
  49.  
  50. </beans>

springmvc-servlet.xml

4.在项目的WebRoot下添加index.jsp文件

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>上传文件</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  15. <meta http-equiv="cache-control" content="no-cache">
  16. <meta http-equiv="expires" content="0">
  17. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  18. <meta http-equiv="description" content="This is my page">
  19. <!--
  20. <link rel="stylesheet" type="text/css" href="styles.css">
  21. -->
  22. </head>
  23.  
  24. <body>
  25. <form action="<%=basePath%>upload.do" method="post" enctype="multipart/form-data">
  26. <input type="hidden" name="holly" value="holly"/>
  27. 上传文件:<input type="file" name="uploadfile">
  28. <input type="submit" value="上传">
  29. </form>
  30. </body>
  31. </html>

index.jsp

5.在项目的WebRoot下添加success.jsp文件

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="cache-control" content="no-cache">
  15. <meta http-equiv="expires" content="0">
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  17. <meta http-equiv="description" content="This is my page">
  18. <!--
  19. <link rel="stylesheet" type="text/css" href="styles.css">
  20. -->
  21. </head>
  22.  
  23. <body>
  24. 文件上传成功
  25. </body>
  26. </html>

success.jsp

6.在项目的WebRoot下添加fail.jsp文件

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="cache-control" content="no-cache">
  15. <meta http-equiv="expires" content="0">
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  17. <meta http-equiv="description" content="This is my page">
  18. <!--
  19. <link rel="stylesheet" type="text/css" href="styles.css">
  20. -->
  21. </head>
  22.  
  23. <body>
  24. 文件上传失败
  25. </body>
  26. </html>

fail.jsp

7.在项目的WebRoot下添加error.jsp文件

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="cache-control" content="no-cache">
  15. <meta http-equiv="expires" content="0">
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  17. <meta http-equiv="description" content="This is my page">
  18. <!--
  19. <link rel="stylesheet" type="text/css" href="styles.css">
  20. -->
  21. </head>
  22.  
  23. <body>
  24. 文件上传异常
  25. </body>
  26. </html>

error.jsp

8.在项目的WebRoot下添加upload文件夹

9.在项目的src下的com.controller包下创建FileController.java文件

  1. package com.controller;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5.  
  6. import javax.servlet.http.HttpServletRequest;
  7.  
  8. import org.apache.commons.io.FileUtils;
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import org.springframework.web.multipart.MultipartFile;
  13. import org.springframework.web.multipart.commons.CommonsMultipartFile;
  14.  
  15. @Controller
  16. public class FileController {
  17. /**
  18. *
  19. * @param file 该属性使用得使用commons-io-2.0.jar文件,低版本不行
  20. * @param request
  21. * @return
  22. */
  23. @RequestMapping("/upload.do")
  24. public String queryFileData(@RequestParam("uploadfile") CommonsMultipartFile file,HttpServletRequest request){
  25.  
  26. /*MultipartFile是对当前上传的文件的封装,
  27. * 当同时上传多个文件时,可以给定多个MultipartFile参数(数组)
  28. */
  29. if(file!=null){
  30. System.out.println("文件对象接到了!");
  31.  
  32. //获取文件名
  33. String filename=file.getOriginalFilename();
  34. System.out.println("filename:"+filename);
  35.  
  36. //获取上传路径
  37. String path=request.getSession().getServletContext().getRealPath("/upload/"+filename);
  38. System.out.println("path:"+path);
  39.  
  40. //创建文件流并指定写入路径
  41. File destFile=new File(path);
  42.  
  43. //springmvc的方式
  44. //该方法自动操作,不需要额外的去关闭IO流
  45. //复制临时文件到指定文件夹下
  46. try {
  47. FileUtils.copyInputStreamToFile(file.getInputStream(), destFile);
  48. System.out.println("上传成功");
  49. return "/success.jsp";
  50. } catch (IOException e) {
  51. e.printStackTrace();
  52. System.out.println("上传失败");
  53. return "/error.jsp";
  54. }
  55. }else{
  56. System.out.println("文件没有对象接到了!");
  57. return "/error.jsp";
  58.  
  59. }
  60. }
  61.  
  62. }

FileController.java

10.有点困,结果自己测试肯定成功

2. SpringMVC 上传文件操作的更多相关文章

  1. SpringMVC上传文件总结

    如果是maven项目 需要在pom.xml文件里面引入下面两个jar包 <dependency> <groupId>commons-fileupload</groupId ...

  2. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  3. springmvc上传文件,抄别人的

    SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...

  4. 使用springMVC上传文件

    control层实现功能: @RequestMapping(value="upload2") public String upLoad2(HttpServletRequest re ...

  5. SpringMVC上传文件(图片)并保存到本地

    SpringMVC上传文件(图片)并保存到本地 小记一波~ 基本的MVC配置就不展示了,这里给出核心代码 在spring-mvc的配置文件中写入如下配置 <bean id="multi ...

  6. SpringMVC 上传文件 MultipartFile 转为 File

    在使用 SpringMVC 上传文件时,接收到的文件格式为 MultipartFile,但是在很多场景下使用都需要File格式的文件,记录下以便日后使用. 以下mFile为MultipartFile文 ...

  7. springmvc 上传文件时的错误

    使用springmvc上传文件一直失败,文件参数一直为null, 原来是配置文件没写成功. <bean id="multipartResolver" class=" ...

  8. SpringMVC上传文件

    SpringMVC中上传文件还是比较方便的,Spring内置了一些上传文件的支持类,不需要复杂的操作即可上传文件. 文件上传需要两个jar支持,一个是commons-fileupload.jar和co ...

  9. SpringMVC上传文件的三种方式(转)

    直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/common ...

随机推荐

  1. [问题]安装express,已经加了-g,还是找不到express命令

    安装express时使用如下命令: npm install -g express 但是在命令行还是找不到express 手动将路径D:\Program Files (x86)\nodejs\node_ ...

  2. WCF 采用net.tcp协议

    WCF 采用net.tcp协议实践   概述 与Socket相比,WCF真是爽得不得了,其基本指导思想为SOA——面向服务. 其基本配置在于ABC(Address,Binding,Contract), ...

  3. C#大牛应该知道的一些知识

    任何一个使用.NET的人 描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗 ...

  4. Win 内存映射和堆栈

    内存映射和堆栈 内存映射文件 内存映射文件可以用于3个不同的目的: 系统使用内存映射文件,以便加载和执行.exe和DLL文件.这可以大大节省页文件空间和应用程序启动运行所需的时间. 可以使用内存映射文 ...

  5. System.Net.Http 简介

    System.Net.Http 简介 System.Net.Http 是微软推出的最新的 HTTP 应用程序的编程接口, 微软称之为“现代化的 HTTP 编程接口”, 主要提供如下内容: 1. 用户通 ...

  6. Python 用SMTP发送邮件

    一.简介 上面介绍了传统邮件的生成和解析,这些都是non-internet,也就是不需要网络就可一完成的.那么当生成了邮件,下一步就是发送了,本文就讲解利用SMTP协议发送邮件. 正如SMTP(Sim ...

  7. IOS学习之路十六(UItableView 通过Prepare for segue 页面传值)

    当你点击一个UITableView 的section 或者cell的时候希望把值传到另一个页面(页面是通过segue跳转的),可以通过prepareforsegure 方法传值 (我的UITableV ...

  8. C#奇葩关键字

    C#奇葩关键字——忐忑 那就认识认识吧,可是又太多,所以也只能是想到哪里是哪里,我们这就让思绪自由飞翔一会吧! 1.@ 这个东东看似和邮件有关啊,但是在C#的世界里,可跟邮件没有一毛钱关系,它是str ...

  9. IceMx.Mvc 我的js MVC 框架 三、动手来写一个评论模块儿

    介绍 本人菜鸟,一些自己的浅薄见解,望各位大神指正. 本框架有以下优点 1.简单(调用简单.实现简单.不过度设计) 2.视图.控制器.模型分离(分离对于维护十分有必要) 3.组件化(每一个mvc模块儿 ...

  10. Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)

    Python:高级主题之(属性取值和赋值过程.属性描述符.装饰器) 背景 学习了Javascript才知道原来属性的取值和赋值操作访问的“位置”可能不同.还有词法作用域这个东西,这也是我学习任何一门语 ...