//1,创建文件上传工厂类 导入common-fileupload.jar conmmon-io.jar包
FileItemFactory fac=new DiskFileItemFactory();
//2,创建文件上传核心类对象ServletFileUpload
ServletFileUpload upload=new ServletFileUpload(fac);
//upload.setFileItemFactory(fac); 必须有这一句或者上一句代码否则报错
//判断,当前表单是否为文件上传表单
if(upload.isMultipartContent(request)){
try {
//3,把请求数据转化为fileItem对象的集合
List<FileItem> list=upload.parseRequest(request);
for(FileItem item:list){
if(item.isFormField()){
String filedName=item.getFieldName();//文本框name值
String value=item.getString();//文本框值
}else{
//文件上传框
String filedName=item.getFieldName();//文本框name值
String contentType=item.getContentType();//文件类型
String name=item.getName();//文件名
InputStream is=item.getInputStream();//文件输入流
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
-------------------------------------------分割线---------------------------------------
FileItemFactory--| 文件上传工厂类(把每一个请求表单封装为一个个fileItem对象)
|--fac.setRepository()----设置临时文件目录
ServletFileUpload--| 文件上传核心类(获取所有的fileItem对象)
|--upload.parseRequest(request)
|--boolean isMultipartContent(fileItem)(判断表单类型 文件上传表单返回true)
|--upload.setFileSizeMax()设置单个文件的最大值
|--upload.setSizeMax()设置所有文件之和的最大值
|--upload.setHeaderEncoding()设置上传文件编码(相当于request.setCharacterEncoding())
FileItem-------|封装了普通表单项的值以及文件上传表单元素值
|---item.getFiledName();获取文本框的name值
|---item.getName();获取文件表框的文件名值(文件上传框才有)
|---item.getContentType();获取文本框的类型值(文件上传框才有)
|---item.getString();获取上传数据
|---item.getString("UTF-8");获取上传数据,处理中文
|---item.getInputStream();获取上传文件流
|---item.write(new File());写文件到目标文件中
|---item.delete();删除临时文件