1.文件上传
导入相关依赖
commons-fileupload commons-io
官方文档:Apache Commons – Apache Commons
实现步骤:
-
创建form表单,设置method=post
-
设置表单的enctype=multipart/form-data
-
添加文件上传表单控件 type=file
-
编写后端代码,处理上传数据
-
public class UploadServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解析请求是否是文件上传请求 是返回true
boolean multipartContent = ServletFileUpload.isMultipartContent(req);
if(multipartContent) {
try {
//创建DiskFileItemFactory工厂实现类
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建用于解析上传数据的工具类
ServletFileUpload fileUpload = new ServletFileUpload(factory);
//解析req请求 获取请求中的表单项FileItem保存在集合中
List<FileItem> items = fileUpload.parseRequest(req);
//获取迭代器 并遍历集合
Iterator<FileItem> iter = items.iterator();
String username = null;
String password = null;
while(iter.hasNext()) {
FileItem item = iter.next();
//判断是普通的表单数据还是上传文件
if(item.isFormField()) {
String fieldName = item.getFieldName();
if("username".equals(fieldName)) {
username = item.getString();
}else if("password".equals(fieldName)) {
password = item.getString();
}
}else {//文件上传
//获取文件名
String name = item.getName();
//获取服务器的真实路径
//String realPath = req.getServletContext().getRealPath("upload");
String realPath = "D:\\upload";
try {
item.write(new File(realPath, name));
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}
}