1. 文件上传三要素

  • 表单项type = “file”
  • 表单的提交方式为POST
  • 表单的enctype属性是多部分表单形式,及enctype = ”multipart/form-data“

2. 文件上传原理

  • 当form表单修改为多部分表单时,request.getParameter()将失效。
  • enctype = "application/x-www-form-urlencoded"时候,form表单的正文内容格式是:key=value&key=value&key=value
  • enctype = "multipart/form-data"时候,请求正文内容就变成了多部份形式:

3. 单文件上传步骤

3.1 导入fileupload和io坐标

<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version>
</dependency>
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.3</version>
</dependency>

3.2 配置文件上传解析器

<!--配置文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="UTF-8"/><property name="maxUploadSize" value="500000"/>
</bean>

3.3 编写文件上传代码

  1. 测试代码
    注意:函数文件参数名必须与上传表单文件name一致

  2. 代码

    ① 获取上传文件的名称:getOriginalFilename()
    String originalFilename = upload.getOriginalFilename();

    ② 设置存储路径:transferTo()
    upload.transferTo(new File(“D:\upload” + originalFilename));

    @RequestMapping(value = "/quick23")
    @ResponseBody
    public void save23(String username, MultipartFile upload) throws IOException {System.out.println(12312312);// 获得上传文件名称String originalFilename = upload.getOriginalFilename();// 设置存储路径upload.transferTo(new File("D:\\upload\\" + originalFilename));
    }
    

4. 多文件上传

与单文件上传类似,只需要多个参数即可

4.1 方式一

form表单name不一致,后端接口分别用不同参数进行接收

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/quick24" method="post" enctype="multipart/form-data">名称<label><input type="text" name="username"/></label><br>文件1<label><input type="file" name="upload"></label><br>文件2<label><input type="file" name="upload2"></label><br><input type="submit" value="提交"><br>
</form></body>
</html>
@RequestMapping(value = "/quick24")
@ResponseBody
public void save24(String username, MultipartFile upload, MultipartFile upload2) throws IOException {System.out.println(upload);System.out.println(upload2);// 获得上传文件名称String originalFilename = upload.getOriginalFilename();// 设置存储路径upload.transferTo(new File("D:\\upload\\" + originalFilename));String originalFilename2 = upload2.getOriginalFilename();upload2.transferTo(new File("D:\\upload\\" + originalFilename2));
}

4.2 方式二

form表单name一直,后端接口用数组接收参数

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/quick25" method="post" enctype="multipart/form-data">名称<label><input type="text" name="username"/></label><br>文件1<label><input type="file" name="upload"></label><br>文件2<label><input type="file" name="upload"></label><br><input type="submit" value="提交"><br>
</form></body>
</html>
@RequestMapping(value = "/quick25")
@ResponseBody
public void save25(String username, MultipartFile[] upload) throws IOException {for (MultipartFile multipartFile : upload) {String originalFilename = multipartFile.getOriginalFilename();multipartFile.transferTo(new File("D:\\upload\\" + originalFilename));}
}

Java进阶:SpringMVC文件上传相关推荐

  1. SpringMvc文件上传和下载

    最近博主在做SpringMvc文件上传和下载的功能实现,上网查了很多资料很多都不太符合理想,找啊找,终于找到一个可以用的,然后再此基础上,我加以改进,可以支持多文件上传,而且代码非常精简,大家可以看看 ...

  2. springmvc请路径参数,springmvc-json-ajax使用,springmvc文件上传,springmvc文件下载,springmvc拦截器(内容较多)

    按照操作,绝对都可以实现,亲测.....(项目所有文件和目录结构全都放上去了) idea工具,创建maven项目 第一步: 放置各种配置文件: pom.xml <?xml version=&qu ...

  3. java语言 文件上传,java中实现文件上传的方法

    java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...

  4. java里面的文件上传与下载

    java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...

  5. java实现多文件上传至本地服务器

    转载自  java实现多文件上传至本地服务器 博主最近在做一个内网项目,内部可以访问外部数据,但是外部访问不了内部数据,这也就造成了可能文件无法上传,所以博主另辟蹊径,在本地服务器上建立一个文件夹专门 ...

  6. SpringMVC文件上传功能MultipartFile参数为空

    最近简单实现了一个springmvc文件上传功能,点了上传按钮一直报空指针,问题解决了mark一下留作以后查阅,如有搜到这篇文章的仅供参考,先上主要代码.springmvc.xml配置如下: < ...

  7. SpringMVC——文件上传下载,异步请求和SSM整合

    一,SpringMVC文件上传下载 1.1 同步 1.1.1 文件上传 第一步:定义上传表单 <form action="${pageContext.request.contextPa ...

  8. Java实现图片文件上传

    Java实现图片文件上传 Java实现后台图片上传,将上传图片的接口进行分层,便于维护接口. 接口部分(interface) 将接口分为单图片上传以及多图片上传 public interface Fi ...

  9. Win10搭建FTP服务器+java代码实现文件上传至FTP服务器

    Win10搭建ftp服务器 打开控制面板 -> 程序和功能,点击启用或关闭Windows功能,勾选红色方框内的选项 控制面板 -> 管理工具,如下打开IIS管理器 先在本地磁盘中创建一个目 ...

  10. java+ajax实现文件上传

    1 文件上传 利用Java+ajax实现文件上传,这里介绍两种提交方法,第一种是file提交,第二种是base64提交 1.1 file方式 1.1.1 FileNameUtils public cl ...

最新文章

  1. Android程序ToDoList增加配置项页面
  2. IDEA将项目上传至码云/GitHub托管
  3. 基于EasyUI的Web应用程序及过去一年的总结
  4. TensorflowSharp 简单使用与KNN识别MNIST流程
  5. [css] 你对响应式设计的理解是什么?知道它基本的原理是吗?要想兼容低版本的IE怎么做呢?
  6. error U1087: cannot have : and :: dependents for same target
  7. 经常在命令提示符中所使用的命令
  8. python 中 print 函数用法总结
  9. FFmpeg源代码简单分析:makefile
  10. php查看当前运行使用的是哪个php.ini
  11. 敏捷开发和瀑布开发的区别
  12. 从构建区块链理解区块链概念
  13. 美容院如何提升员工敬业度?
  14. fn映射 mac 键盘_如何在Mac OS X下修改Fn键的属性?
  15. SpringCloud五大常用组件
  16. ETL-kettle/pentaho的二次开发
  17. 区块链日记——【译】用Java创建你的第一个区块链-part2:可交易
  18. 真c++ 从二叉树到红黑树(3)之二叉搜索树BST
  19. HTML和CSS3写的switch插件
  20. 赵钟秋谈又拍网架构中的消息/任务系统

热门文章

  1. 7.jenkins 发布邮件
  2. 13.字符串,结构,联合
  3. php中字符串与数组的相互转化explode(separator,$str)与implode(separator,$arr)
  4. (hdu 1568) Fibonacci
  5. 基于扩展性考虑,不同场景选择的不同方案
  6. Windows中MySQL主从数据库搭建(三)
  7. C# CRC16 modbus
  8. Thinking in Java 12.8.2 在return中使用finally
  9. 解决响应式布局border带来的麻烦
  10. Linux下编译(安装)程序、编译库整理