//存放文件上传的路径
private String dirPath = "D:/upload";
//创建一个上传文件的方法,用apache提供的上传组件实现(2个相关联的包)public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws Exception{//创建文件上传工厂对象FileItemFactory factory = new DiskFileItemFactory();//创建文件上传的核心类ServletFileUpload upload = new ServletFileUpload(factory);//设置单个文件允许的最大大小upload.setFileSizeMax(10*1024*1024);//10M//设置表单中所有文件的最大容量,设为30Mupload.setSizeMax(30*1024*1024);//30M//设置文件名的编码方式,可以不用设置//相当于request.setCharacterEncoding("utf8");upload.setHeaderEncoding("utf8");//判断是否文件上传表单if (upload.isMultipartContent(request)) {//把请求数据转换为FileItem对象,将所有FileItem对象放入集合中Listlist = upload.parseRequest(request);
for (FileItem item : list) {
//判断是否是普通文本数据 form的text等
if (item.isFormField()) {
//得到表单元素的名称和值(key、value)
System.out.println(item.getFieldName());//key
item.getString();//value
//得到表参数中对应的数据
System.out.println(item.getString("utf8"));
}else {//说明是文件
String name = item.getName();
String id = UUID.randomUUID().toString().replace("-", "");//去掉uuid的“-”
if (name==null||name.isEmpty()) {
continue;
}
//生成新的文件名
name = id+"-"+name;
//如果上传目录不存在,创建
File f = new File(dirPath);
if (!f.exists()) {
f.mkdirs();
}
//创建目标文件(两者组合一个路径)
File file = new File(dirPath,name);
//上传文件
item.write(file);
//删除完上传过程中产生的临时文件
item.delete();
}
}
}
}
注:******