首先说明,使用commons-fileupload和common-io两个jar包实现。
1.先判断上传的数据是否是多段数据(因为只有多段数据才是文件上传)
ServletFileUpload.isMultipartContent(req)
2.然后创建FileItemFactory工厂实现类以及ServletFileUpload类
FileItemFactory fileItemFactory = new FileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
3.由servletFileUpload得到request数据解析方法,
解析上传的数据,得到每一个表单项即
list<FileItem> list = servletFileUpload.parseRequest(req);
4.接下来,判断list中的每一个表单项,是普通表单项还是文件表单项,
先遍历,再判断,如下
for(FileItem fileItem : list){
if(fileItem.isFormField){
//可得到每个普通表单项的name属性值和value(即浏览器端输入的参数值)
System.out.println(fileItem.getFieldName());
System.out.println(fileItem.getString());
}else{
//文件表单项,得到表单项的name属性值以及上传文件的文件名
System.out.println(fileItem.getFileFieldName());
System.out.println(fileItem.getName());
}
}
5.将上传的文件存储到本地磁盘,只需在第四步的else中加入一个write()方法即可
fileItem.write("d:\\");