🍁博客主页:👉 不会压弯的小飞侠
✨欢迎关注:👉点赞👍收藏⭐留言✒
✨如果觉得博主的文章还不错的话,请三连支持一下博主。
🔥欢迎大佬指正,一起 学习!一起加油!
一、文件上传三要素
- 表单项type= “file"
- 表单的提交方式是post
- 表单的enctype属性是多部分表单形式,及enctype=“multipart/form-data".
<form action="${pageContext.request.contextPath}/user/quick21" method="post" enctype="multipart/form-data">
名称<input type="text" name="username"><br>
文件<input type="file" name="upload"><br>
<input type="submit" value="提交">
</form>
二、文件上传原理
- 当form表单修改为多部分表单时,request.getParameter0将失效
- enctype= “application/x-www-form-urlencoded”时,form表单的正文内容格式是:key=value&key=value&key=value
- 当form表单的enctype取值为Mutilpart/form-data时,请求正文内容就变成多部分形式。
三、单文件上传步骤
- 导入fileupload和io坐标
- 配置文件上传解析器
- 编写文件上传代码
1.导入fileload和io坐标
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
2.配置文件上传解析器
<!--配置文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxInMemorySize" value="500000"></property>
</bean>
3.编写文件上传代码
@RequestMapping(value = "/quick21")
@ResponseBody //告诉SpringMVC框架不进行视图跳转,直接进行数据响应
public void save21(String username, MultipartFile upload) throws IOException {
System.out.println(username);
/*System.out.println(upload);*/
//获得上传文件名称
String originalFilename = upload.getOriginalFilename();
upload.transferTo(new File("F:\\upload\\"+originalFilename));
}
四、多文件上传
1.方式一
<form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">
名称<input type="text" name="username"><br>
文件<input type="file" name="upload"><br>
文件<input type="file" name="upload1"><br>
<input type="submit" value="提交">
</form>
@RequestMapping(value = "/quick22")
@ResponseBody //告诉SpringMVC框架不进行视图跳转,直接进行数据响应
public void save22(String username, MultipartFile upload,MultipartFile upload1) throws IOException {
System.out.println(username);
/*System.out.println(upload);*/
//获得上传文件名称
String originalFilename = upload.getOriginalFilename();
upload.transferTo(new File("F:\\upload\\"+originalFilename));
String originalFilename1 = upload1.getOriginalFilename();
upload.transferTo(new File("F:\\upload\\"+originalFilename1));
}
2.方式二(数组)
<form action="${pageContext.request.contextPath}/user/quick23" method="post" enctype="multipart/form-data">
名称<input type="text" name="username"><br>
文件<input type="file" name="upload"><br>
文件<input type="file" name="upload"><br>
<input type="submit" value="提交">
</form>
@RequestMapping(value = "/quick23")
@ResponseBody //告诉SpringMVC框架不进行视图跳转,直接进行数据响应
public void save23(String username, MultipartFile[] upload) throws IOException {
System.out.println(username);
/*System.out.println(upload);*/
//获得上传文件名称
for (MultipartFile multipartFile : upload) {
String originalFilename = multipartFile.getOriginalFilename();
multipartFile.transferTo(new File("F:\\upload\\"+originalFilename));
}
}
五、知识要点
MVC实现数据请求方式
- 基本类型参数
- PoJo类型参数
- 数组类型参数
- 集合类型参数
MVC获取数据细节
中文乱码问题
- @RequestParam和@Pathvariable自定义类型转换器
- 获得servlet相关API
- @RequestHeader和cookievalue文件上传