FileUpload
文件上传工具类
1.添加依赖
- 在pom文件添加依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
- 添加IO包简化IO操作
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
2.FileUpload核心类
类名 | 介绍 |
---|---|
DiskFileItemFactory | 磁盘文件项工厂, 读取文件时相关的配置,比如: 缓存的大小 , 临时目录的位置 |
ServletFileUplaod | 文件上传的一个核心类 |
FileItem | 代表每一个表单项 |
3.文件上传的API
- ServletFileUpload类 | 方法 | 说明 | | —- | —- | | isMultipartContent(request); | 判断是否是一个文件上传的表单 | | parseRequest(request); | 解析request获得表单项的集合 | | setHeaderEncoding(“UTF-8”); | 设置上传的文件名的编码方式 |
- FileItem类 | 方法 | 说明 | | —- | —- | | isFormField() | 判断是否是普通表单项 | | getFieldName() | 获得表单的name属性值 | | item.getString() | 获得表单的value值 | | getName() | 获得上传文件的名称 | | getInputStream() | 获得上传文件 | | delete() | 删除临时文件 |
4.文件上传方法
- 文件上传方法
public void fileUpload(HttpServletRequest req, HttpServletResponse resp)
throws FileUploadException, IOException {
// 1.创建磁盘文件项工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 2.创建文件上传核心类
ServletFileUpload upload = new ServletFileUpload(factory);
// 3.设置上传文件名的编码
upload.setHeaderEncoding("UTF-8");
// 4.判断表单是否是文件上传表单
if (ServletFileUpload.isMultipartContent(req)) {
// 5.解析request ,获取文件项集合
List<FileItem> list = upload.parseRequest(req);
if (list != null) {
// 6.遍历获取表单项
for (FileItem item : list) {
// 7.判断是不是文件表单项
if (!item.isFormField()) {
// 8.获取文件上传项
String fileName = item.getName();
// 9.获取文件输入流
InputStream in = item.getInputStream();
// 10.设置文件输出流
// String path = this.getServletContext().getRealPath("/")
FileOutputStream out =
new FileOutputStream("/Users/upload/" + fileName);
// 11.通过IO工具类保存文件到输出流
IOUtils.copy(in, out);
// 12.关闭输入输出流
out.close();
in.close();
}
}
}
}
}
更新时间:{docsify-updated}