作者: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>

成功返回的界面:





附件列表

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

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

    1.文件上传给服务器,服务器端必然要写代码进行支持,如下: 我们新建一个FileUpload.jsp的动态网页,同时我们上传文件只能使用post方式(不可能将上传数据拼凑在url路径下),上传数据Ap ...

  2. Javaweb学习笔记——(二十二)——————文件上传、下载、Javamail

    文件上传概述      1.文件上传的作用          例如网络硬盘,就是用来上传下载文件的.          在网络浏览器中,时常需要上传照片 2.文件上传对页面的要求          上 ...

  3. 【Struts2学习笔记(9)】单文件上传和多文件上传

    (1)单文件上传 第一步:在WEB-INF/lib下增加commons-fileupload-1.2.1.jar.commons-io-1.3.2.jar. 这两个文件能够从http://common ...

  4. struts2学习笔记(七)—— struts2的文件上传

    一.前台页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...

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

    1.文件上传给服务器,服务器端必然要写代码进行支持,如下: 我们新建一个FileUpload.jsp的动态网页,同时我们上传文件只能使用post方式(不可能将上传数据拼凑在url路径下),上传数据Ap ...

  6. Python3学习笔记(十八):文件上传和下载

    文件上传 以人人网上传头像为例,用Fiddler抓取的上传头像接口报文如下 上传头像图片代码: import requests upload_url = 'http://upload.renren.c ...

  7. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

  8. Spring MVC 学习总结(五)——校验与文件上传

    Spring MVC不仅是在架构上改变了项目,使代码变得可复用.可维护与可扩展,其实在功能上也加强了不少. 验证与文件上传是许多项目中不可缺少的一部分.在项目中验证非常重要,首先是安全性考虑,如防止注 ...

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

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简 ...

随机推荐

  1. RM报表,点击保存,为何每次都显示 另存为的对话框?

    function TRMDesignerForm.FileSave: Boolean; var lSaved: Boolean; lFileName: string; begin Result := ...

  2. js图片切换 带左右控制的

    代码下载

  3. hpu 1267 Cafeteria (01背包)

    1267: Cafeteria [DP] 时间限制: 1 Sec 内存限制: 128 MB提交: 76 解决: 31 统计 题目描述 Nanae把饥肠辘辘的josnch带去一家自助餐厅,面对面前眼花缭 ...

  4. Windows XP系统服役13年今正式退休

    清明已过,服役13年的微软Windows XP系统也于今日正式“退休”.尽管这之后XP系统仍可以继续使用,但微软不再提供官方服务支持.对于中国数以亿计的XP用户来说,一方面是对已经使用了13年的操作系 ...

  5. Tesseract-OCR 训练教程(二) 合并新的训练文件

    在原有训练数据的基础上,如果有新的字符训练信息需要加入,所有数据重新校准一遍就累死人了.... 经研究找到实用合并方法(红色部分为示例,实际应为你自己生成的文件名): 在新的训练数据生成.box 和. ...

  6. grafana的一些坑

    坑1: 在设置alert的时候template中的变量是不被支持的,警告如下: 解决办法: 使用不带变量的具体sql查询 坑2: 时间轴的设置: 在更早的版本中时间轴的locale是无法设置的,就是说 ...

  7. 关于前端的margin

    margin 边界,元素周围生成额外的空白区.“空白区”通常是指其他元素不能出现且父元素背景可见的区域.——CSS权威指南 我比较喜欢使用“外边距”这个词来解释margin(同理padding可以称之 ...

  8. ADC复用重映射

  9. [LeetCode&Python] Problem 884. Uncommon Words from Two Sentences

    We are given two sentences A and B.  (A sentence is a string of space separated words.  Each word co ...

  10. Win7不能用鼠标双击运行jar文件怎么办?

    Java应用程序jar文件可以由 JVM(Java虚拟机)直接执行,只要操作系统安装了JVM便可以运行作为Java应用程序的jar文件,其跨平台特性使得很多工具软件都用jar方式来部署分发,比如用于H ...