2.12 文件上传
1.文件上传客户端三要素
- 表单项type="file"
- 表单的提交方式是post
- 表单的enctype属性是多部分表单方式,及enctype="multipart/form-data"
<form action="${pageContext.request.contextPath}/quick" method="post">
enctype="multipart/form-data">
名称:<input type="text" name="name"><br>
文件:<input type="file" name="file"><br>
<input type="submit" value="提交"><br>
</form>
2. 文件上传原理
- 当form表单修改为多部分表单时,Request.getParameter()将失效
- enctype=“application/x*www*form-urlencoded”时,form表单的正文内容格是:key=value&key=value&key=value
- 当form表单的enctpe取值为Mutilpart/form-data时,请求正文内容就变成多部分形式
2.13 单文件上传步骤
- 导入fileupload和io坐标
- 配置文件上传解析器
- 编写文件上传代码
1.导入fileupload和io坐标
<dependency>
<groupld>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupld>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
2.配置文件上传解析器
<bean id="mustipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件总大小-->
<property name="maxUploadSize" value="5242800"/>
<!--上传单个文件的大小-->
<property name="maxUploadSizePerFile" value="5242800"/>
<!--上传文件的编码类型-->
<property name="defaultEncoding" value="UTF-8"/>
</bean>
3.编写文件上传代码
@RequestMapping("/quick")
@ResponseBody
public void quickMethod20(String name,MultipartFile uploadFile)throws IOException{
//获得文件名称
String originaFilename=uploadFile.getOriginalFilename();
//保存文件
pploadFile.transferTo(new File("C:\\upload\\"+originalFilename));
}
2.14 多文件上传实现
多文件上传,只需将页面修改为多个文件上传项,将方法参数MultipartFile类型修改为MultiparFile[]即可
<h1>多文件上传测试</h1>
<form action="${pageContext.request.contextPath}/quick" method="post" enctype="multipart/form-data">
名称:<input type="text" name="name"><br>
文件1:<input type="file" name="uploadFiles"><br>
文件2:<input type="file" name="uploadFiles"><br>
文件3:<input type="file" name="uploadFiles"><br>
<input type="sumit" value="提交"><br>
</form>
@RequestMapping("/quick")
@ResponseBody
public void quickMethod(String name,MultpartFile[] urloadFiles)throws IOException{
for(MultiparFile uploadFile : uploadFiles){
String ringinalFilename=uploadFile.getOringinalFilename();
pploadFile.transferTO(new File("C:\\upload\\"+originalFilename));
}
}
2.15 知识要点
MVC实现数据请求方式
- 基本类型参数
- POJO类型参数
- 数组类型参数
- 集合类型参数
MVC获取数据细节
- 中文乱码问题
- @RequestParam和@PathVariable
- 自定义类型转换器
- 获得Servlet相关APl
- @RequestHeader和@CookieValue
- 文件上传