【Spring学习笔记-MVC-13】Spring MVC之文件上传

作者:ssslinppp      


1. 摘要




Spring MVC为文件上传提供了最直接的支持,这种支持是通过即插即用的MultipartResolve实现的。Spring使用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。

下面将具体讲解Spring MVC实现文件上传的具体步骤。

2. 添加Jar包


Spring MVC文件上传,需要添加如下两个jar包:

  1. commons-fileupload-1.2.2.jar;
  2. commons-io-2.0.1.jar

3. 配置CommonsMultipartResolver


  1. <!-- 文件上传 -->
  2. <bean id="multipartResolver"
  3. class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
  4. p:defaultEncoding="UTF-8" p:maxUploadSize="5000000" p:uploadTempDir="upload/temp" />

说明:

  • p:defaultEncoding="UTF-8":这里设置默认的文件编码为UTF-8,必须与用户JSP的默认编码一致;
  • p:maxUploadSize="5000000":指定文件上传大小,单位为字节;
  • p:uploadTempDir="upload/temp":文件上传临时目录,上传完成后,就会将临时文件删除;

4. 控制层代码


前台请求:http://localhost:8080/SpringMVCTest/test/uploadPage.action 时,返回uploadPage.jsp界面,如下:



  1. @RequestMapping(value = "/upload")
  2. public String updateThumb(@RequestParam("name") String name,
  3. @RequestParam("file") MultipartFile file,
  4. HttpServletRequest request, ModelMap model) throws Exception {
  5. if (!file.isEmpty()) {
  6. // 保存文件-方式1 --测试过,可以用,必须先创建相应目录
  7. // file.transferTo(new File("d:/"+file.getOriginalFilename()));
  8. // 保存文件-方式2
  9. String path = request.getSession().getServletContext()
  10. .getRealPath("upload");
  11. String fileName = file.getOriginalFilename();
  12. File targetFile = new File(path, fileName);
  13. //目录不存在,则创建目录
  14. if(!targetFile.exists()){
  15. targetFile.mkdirs();
  16. }
  17. //保存
  18. try {
  19. file.transferTo(targetFile);
  20. } catch (Exception e) {
  21. e.printStackTrace();
  22. }
  23. model.addAttribute("fileUrl", request.getContextPath()+"/upload/"+fileName);
  24. return "success";
  25. } else {
  26. return "fail";
  27. }
  28. }

5. 文件上传JSP



  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4. <html>
  5. <head>
  6. <title>请上传用户头像</title>
  7. </head>
  8. <body>
  9. <h1>请选择上传的头像文件</h1>
  10. <form method="post" action="<c:url value="/test/upload.action"/>"
  11. enctype="multipart/form-data">
  12. <input type="text" name="name" />
  13. <input type="file" name="file" />
  14. <input type="submit" />
  15. </form>
  16. </body>
  17. </html>

成功返回的界面:



6. 博客


http://www.cnblogs.com/ssslinppp 

http://blog.sina.com.cn/spstudy 



来自为知笔记(Wiz)

附件列表

时间: 2024-10-28 22:05:05

【Spring学习笔记-MVC-13】Spring MVC之文件上传的相关文章

Android(java)学习笔记214:开源框架的文件上传(只能使用Post)

1.文件上传给服务器,服务器端必然要写代码进行支持,如下: 我们新建一个FileUpload.jsp的动态网页,同时我们上传文件只能使用post方式(不可能将上传数据拼凑在url路径下),上传数据Apache给我们提供了完善的框架,我们只要引入commons-fileupload-1.2.2.jar  和  commons-io-2.0.1.jar就可以使用这个Apache给我们封装好的框架,这两个jar放到如下目录下: WebContent/WEB-INF/lib/ 引入jar包之后,接下来我

Spring MVC使用commons fileupload实现文件上传功能

通过Maven建立Spring MVC项目,引入了Spring相关jar依赖. 1.为了使用commons fileupload组件,需要在pom.xml中添加依赖: <properties> <spring.version>3.0.7.RELEASE </spring.version> <junit.version>3.8.1</junit.version> <fileupload.version>1.2.2</fileupl

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

<Spring学习笔记>:Spring.Hibernate.struts2的整合(以例子来慢慢讲解,篇幅较长) 最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring.Hibernate.struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下. 特此说明:本篇博文完全参考于马士兵老师的<Spring视频教程>. 本篇博文均以如下这

Spring学习笔记一(Spring核心思想)

通过学习<Spring in action (Third edition)>的第一章,我大概了解了Spring的基本思想: 1,依赖注入(Dependnecy Injection): 在不使用Spring框架的情况下,一个类要跟另一个类建立联系,可能会使用如下的模式: class A{...} class B{ private A a; ...       } 这样的话,每次实例化一个B的对象,如b1,必定实例化一个A的对象,如a1,并且b1和a1是紧耦合的,b1牢牢地和a1绑定在一起了.他们

Servlet3.0学习总结(三)——基于Servlet3.0的文件上传

Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不需要借助任何第三方上传组件,直接使用Servlet3.0提供的API就能够实现文件上传功能了. 一.使用Servlet3.0提供的API实现文件上传 1.1.编写上传页面 1 <%@ page language="jav

Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简介 Spring内置的multipart支持会处理web应用中的文件上传.你可以启用该支持 -- 通过可插拔的MultipartResolver对象们,它们都是定义在 org.springframework.web.multipart 包中.Spring提供了一个MultipartResolver实

结合项目(Spring+(基于注解的)SpringMVC和Mybatis+uploadify文件上传)--poi解析Excel文件

poi解析Excel文件 1.上传文件至服务器 2.解析Excel文件并返回数据集合 3.将数据保存到服务器 框架======Spring+(基于注解的)SpringMVC和Mybatis===== 第一步: 前台: jsp文件采用的是uploadify <div id="fileQueue"></div> <input type="file" id="brandFile"> js: <script ty

【SSH网上商城项目实战13】Struts2实现文件上传功能

上一节我们做完了添加和更新商品的功能,这两个部分里有涉及到商品图片的上传,并没有详细解说.为此,这篇文章详细介绍一下Struts2实现文件上传的功能. 1. 封装文件信息 我们首先得有一个Model来封装文件的信息,这个Model里需要有三个属性:文件.文件类型和文件名.针对我们要传的图片,我们新建一个Model如下: public class FileImage { private File file; private String contentType; private String fi

salesforce 零基础学习(四十二)简单文件上传下载

项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文件上传到Document对象中. 一.文件上传功能 apex代码 1 public with sharing class FileUploadUsedTransientController { 2 3 public transient Blob fileUploadBody{get;set;} 4