1.文件上传客户端三要素
- 表单项type=“file”
- 表单的提交方式是post
- 表单的enctype属性是多部分表单形式,即enctype=“multipart/form-data”
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/quick19" method="post" enctype="multipart/form-data">
名称:<input type="text" name="name"><br/>
文件:<input type="file" name="file"><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
2.文件上传原理
- 当form表单修改为多部分表单时,request.getParameter()将失效
- enctype="application/x-www-form-urlencoded"时,form表单的正文内容格式是:key=value&key=value&key=value
- 当form表单的enctype取值为multipart/form-data时,请求正文内容就变成多部分形式
3.单文件上传步骤
- 导入fileupload和io坐标
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
- 配置文件上传解析器
<!-- 配置文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 上传文件总大小 -->
<property name="maxUploadSize" value="5242800"/>
<!-- 上传单个文件的大小 -->
<property name="maxUploadSizePerFile" value="5242800"/>
<!-- 上传文件的编码类型 -->
<property name="defaultEncoding" value="UTF-8"/>
</bean>
- 编写文件上传代码
@RequestMapping("/quick19")
@ResponseBody
public void save19(String name, MultipartFile file) throws IOException {
System.out.println(name);
// 获得文件名称
String originalFilename = file.getOriginalFilename();
// 保存文件
file.transferTo(new File("E:\\JavaWorkSpace\\upload\\" + originalFilename));
}
4.多文件上传实现
多文件上传,只需要将页面修改为多个文件上传项,将方法参数MultipartFile类型修改为MultiFile[]即可。
<form action="${pageContext.request.contextPath}/user/quick20" 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/>
<input type="submit" value="提交">
</form>
@RequestMapping("/quick20")
@ResponseBody
public void save20(String name, MultipartFile[] uploadfiles) throws IOException {
System.out.println(name);
for (MultipartFile uploaFile : uploadfiles) {
String originalFilename = uploaFile.getOriginalFilename();
uploaFile.transferTo(new File("E:\\JavaWorkSpace\\upload\\" + originalFilename));
}
}
1031



被折叠的 条评论
为什么被折叠?



