文章目录

  • 一、单文件上传
    • 1. 创建上传表单
    • 2. 新增配置
    • 3. 编写上传控制类
    • 4. 接收参数
    • 5.文件保存路径
    • 6. 转存文件
  • 二、多文件上传
    • 2.1. 创建上传表单
    • 2.2. 编写上传控制类
    • 2.3. 保存文件
  • 三、MultipartFile类常用方法

这篇文章主要为大家详细介绍了SpringMVC使用MultipartFile实现文件上传功能

一、单文件上传
  • 前端(单文件)
1. 创建上传表单
<body>
<h2>文件上传实例</h2> <form action="fileUpload.html" method="post" enctype="multipart/form-data"> 选择文件:<input type="file" name="file"> <input type="submit" value="提交">
</form> </body>

注意要在form标签中加上enctype="multipart/form-data"表示该表单是要处理文件的,这是最基本的东西,很多人会忘记然而当上传出错后则去找程序的错误,却忘了这一点。

2. 新增配置

后端
SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file

<!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --><beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"p:defaultEncoding="UTF-8"p:maxUploadSize="5400000"p:uploadTempDir="fileUpload/temp">
</beans:bean>

其中属性详解:
defaultEncoding=“UTF-8” 是请求的编码格式,默认为iso-8859-1
maxUploadSize=“5400000” 是上传文件的大小,单位为字节
uploadTempDir=“fileUpload/temp” 为上传文件的临时路径

3. 编写上传控制类

1.创建一个控制类: FileUploadController和一个返回结果的页面 list.jsp
2.编写提交表单的action

//通过Spring的autowired注解获取spring默认配置的request @Autowiredprivate HttpServletRequest request; /*** * 上传文件 用@RequestParam注解来指定表单上的file为MultipartFile * * @param file * @return */@RequestMapping("fileUpload") public String fileUpload(@RequestParam("file") MultipartFile file) { // 判断文件是否为空 if (!file.isEmpty()) {try { // 文件保存路径 String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"+ file.getOriginalFilename(); // 转存文件 file.transferTo(new File(filePath)); } catch (Exception e) { e.printStackTrace(); } } // 重定向 return "redirect:/list.html"; } /*** * 读取上传文件中得所有文件并返回 * * @return */@RequestMapping("list") public ModelAndView list() { String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"; ModelAndView mav = new ModelAndView("list"); File uploadDest = new File(filePath); String[] fileNames = uploadDest.list(); for (int i = 0; i < fileNames.length; i++) { //打印出文件名 System.out.println(fileNames[i]); } return mav; }
4. 接收参数

使用SpringMVC注解RequestParam来指定表单中的file参数;

5.文件保存路径

指定一个用于保存文件的web项目路径

6. 转存文件

通过MultipartFile的transferTo(File dest)这个方法来转存文件到指定的路径。

到此基本的单文件上传就结束了。

二、多文件上传

多文件上传其实很简单,和上传其他相同的参数如checkbox一样,表单中使用相同的名称,然后action中将MultipartFile参数类定义为数组就可以。

2.1. 创建上传表单

创建一个上传多文件的表单:

<body> <h2>上传多个文件 实例</h2> <form action="filesUpload.html" method="post"enctype="multipart/form-data"> <p> 选择文件:<input type="file" name="files"> <p> 选择文件:<input type="file" name="files"> <p> 选择文件:<input type="file" name="files"> <p> <input type="submit" value="提交"> </form>
</body>
2.2. 编写上传控制类
编写action: @RequestMapping("filesUpload") public String filesUpload(@RequestParam("files") MultipartFile[] files) { //判断file数组不能为空并且长度大于0 if(files!=null&&files.length>0){ //循环获取file数组中得文件 for(int i = 0;i<files.length;i++){ MultipartFile file = files[i]; //保存文件 saveFile(file); } } // 重定向 return "redirect:/list.html"; }
2.3. 保存文件

编写处理表单的action,将原来保存文件的方法单独写一个方法出来方便共用:

/*** * 保存文件 * @param file * @return */private boolean saveFile(MultipartFile file) { // 判断文件是否为空 if (!file.isEmpty()) { try { // 文件保存路径 String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"+ file.getOriginalFilename(); // 转存文件 file.transferTo(new File(filePath)); return true; } catch (Exception e) { e.printStackTrace(); } } return false; }
三、MultipartFile类常用方法

String getContentType()//获取文件MIME类型
InputStream getInputStream()//后去文件流
String getName() //获取表单中文件组件的名字
String getOriginalFilename() //获取上传文件的原名
long getSize() //获取文件的字节大小,单位byte
boolean isEmpty() //是否为空
void transferTo(File dest) //保存到一个目标文件中。
以上就是本文的全部内容,希望对大家的学习有所帮助

使用MultipartFile实现文件上传_SpringMVC相关推荐

  1. 利用MultipartFile实现文件上传

    利用MultipartFile实现文件上传 在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的Multipar ...

  2. java awt文件上传_springMVC实现前台带进度条文件上传的示例代码

    项目框架采用spring+hibernate+springMVC如果上传文件不想使用flash那么你可以采用HTML5;截图前段模块是bootstarp框架;不废话直接来代码;spring-mvc配置 ...

  3. java muti实现图片上传_使用MultipartFile实现文件上传

    项目中会经常实现文件上传功能,比如在前台页面中设置上传文件按钮,后台保存文件至服务器,操作完成后前台展示上传结果,如上传成功或者上传失败信息.使用MultipartFile可以很容易的实现文件上传功能 ...

  4. Java MultipartFile实现文件上传并为图片加上水印(二)

    防止走丢~~欢迎大家留言收藏点赞 在上一篇我们已经实现了文件的上传,那么如果对于图片的上传,我们要给图片加上我们需要的水印信息,比如图片的上传人,上传地点等信息,此时我们为上传功能再新增水印功能. 最 ...

  5. Java MultipartFile实现文件上传(一)

    使用MultipartFile上传至本地或者文件服务器 直接上代码 一.前端上传至服务端(controller层) package com.cargps.common;import com.aliba ...

  6. 【Java报错】MultipartFile 类型文件上传 Current request is not a multipart request 问题处理(postman添加MultipartFile)

    1. 问题描述 一个正常的Excel文档上传并导入其数据的接口开发,首先出现问题的是 Doc 文档,我使用的是: <dependency><groupId>com.github ...

  7. java文件上传(MultipartFile)

    java文件上传(MultipartFile) java多文件上传_Java利用MultipartFile实现上传多份文件的代码 利用MultipartFile实现文件上传 Excel解析easyex ...

  8. 007_SpringBoot文件上传

    1. 使用maven构建SpringBoot的名叫spring-boot-fileupload项目 2. pom.xml <project xmlns="http://maven.ap ...

  9. Springboot2拦截器与文件上传

    拦截器-登录检查与静态资源放行 1.编写一个拦截器实现HandlerInterceptor接口 2.拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors()) 3. ...

最新文章

  1. MDX Step by Step 读书笔记(五) - Working with Expressions (MDX 表达式)
  2. 解读MySQL的慢日志
  3. java中友元类_友元类成员的依赖关系|循环依赖
  4. HMAC(1)消息认证码MAC算法
  5. pythonweb开发面试_python 高级岗位面试要求
  6. C和指针之字符串之strlen、strcpy、 strcat、strcmp使用总结
  7. 【51单片机快速入门指南】4.3.3: MPU6050使用Mahony AHRS算法实现六轴姿态融合获取四元数、欧拉角
  8. RabbitMq(十二) 借用死信交换机实现延迟队列
  9. 三维旋转四元数系列(0.复数基本介绍)
  10. mysql事务和锁 SELECT FOR UPDATE
  11. 考研复试数据库知识总结
  12. 如何清空c盘只剩系统_如何清除c盘除系统外所有垃圾
  13. 检索网络方向的学生选修先行课为计算机网络,等价的关系代数表达式,其执行效率也是一样的。...
  14. 倪光南建议禁用Win10政府版 微软合作方回应
  15. latex 矩阵叫行列编号
  16. OBCA认证知识点-part4
  17. 微信内置浏览器清理缓存方法
  18. 【2022 CCPC 桂林站 日志】部分题解
  19. 最佳页面置换算法详解
  20. 花儿花儿为谁开。。。

热门文章

  1. 一个42KB的文件,解压完其实是个4.5PB的“炸弹”
  2. 霍金的遗愿清单:离开地球,警惕人工智能
  3. 揭开HTTPS的神秘面纱
  4. 23种设计模式之工厂方法模式
  5. C字节对齐与C++类对象内存布局
  6. 开关问题(模板+高斯消元)
  7. Midway Serverless 发布 2.0,一体化让前端研发再次提效
  8. 10个一行代码就能搞定的编程技巧
  9. 阿里宜搭重磅发布专有云版本、精品应用市场,助力政企数字化转型
  10. 中小企业上云多地域办公组网,建立高质量云上内网环境