JAVA全系列 教程
3762个小节阅读:7090.3k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
接下来需要分析请求体中的文件项,并将数据写入磁盘,此时需要借助文件上传工具
引入文件上传依赖:
xxxxxxxxxx
<!-- 文件上传 -->
<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.4</version>
</dependency>
编写控制器接收上传请求,控制器进行三步操作:
创建文件夹,存放上传文件。
分析请求体,找到上传文件数据。
将文件数据写入文件夹。
xxxxxxxxxx
@RequestMapping("/fileUpload")
public String upload(HttpServletRequest request) throws Exception {
// 创建文件夹,存放上传文件
// 1.设置上传文件夹的真实路径
String realPath = request.getSession().getServletContext().getRealPath("/upload");
// 2.判断该目录是否存在,如果不存在,创建该目录
File file = new File(realPath);
if(!file.exists()){
file.mkdirs();
}
// 分析请求体,找到上传文件数据
// 1.创建磁盘文件工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 2.创建上传数据分析器对象
ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
// 3.利用分析器对象解析请求体,返回所有数据项
List<FileItem> fileItems = servletFileUpload.parseRequest(request);
// 4.遍历所有数据,找到文件项(非表单项)
for (FileItem fileItem:fileItems){
if(!fileItem.isFormField()){
// 将文件数据写入文件夹
// 1.获取文件名
String name = fileItem.getName();
// 2.将文件写入磁盘
fileItem.write(new File(file,name));
// 3.删除内存中的临时文件
fileItem.delete();
}
}
return "index";
}
1. 上传文件表单的提交方式必须为
A GET
B POST
C DELETE
D PUT
2. 上传文件表单的enctype
属性为
A multipart/form-data
B text/plain
C application/x-www-form-urlencoded
D 以上都可以
1=>B 2=>A