DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置缓存大小,如果文件大于缓存大小时,则先把文件放到缓存中
factory.setSizeThreshold(4 * 1024);
// 设置上传文件的保存路径
factory.setRepository(f);
// 产生Servlet上传对象
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
// 设置可以上传文件大小的上界4MB
upload.setSizeMax(4 * 1024 * 1024);
try {
// 取得所有上传文件的信息
List<FileItem> list = upload.parseRequest(request);//servletRequest
Iterator<FileItem> iter = list.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
// 如果接收到的参数不是一个普通表单(例text等)的元素,那么执行下面代码
if (!item.isFormField()) {
String fieldName = item.getFieldName();// 获得此表单元素的name属性
String fileName = item.getName();// 获得文件的完整路径
String contentType = item.getContentType();// 获得文件类型
long fileSize = item.getSize();// 获得文件大小
// 从文件的完整路径中截取出文件名
if (!("".equals(fileName)) && !(fileName == null)) {
// 如果上传的文件不是图片,那么不上传
String allImgExt = ".jpg|.jpeg|.gif|.bmp|.png|";
String extName = fileName.substring(
fileName.indexOf("."), fileName.length());
if (allImgExt.indexOf(extName + "|") == -1) {
message = "该文件类型不允许上传。请上传 " + allImgExt
+ " 类型的文件,当前文件类型为" + extName;
break;
}
fileName = Util.getImageName(fileName);
String filepath = projectpath + fieldName;
File uf = new File(filepath);
// 更改文件的保存路径,以防止文件重名的现象出现
if (!uf.exists()) {
uf.mkdir();
}
// 此输出路径为保存到数据库中photo字段的路径
String insertDB = filepath + "\\" + fileName;
System.out.println("文件路径:" + insertDB + ":"
+ insertDB.length());
File uploadedFile = new File(filepath, fileName);
try {
// 如果在该文件夹中已经有相同的文件,那么将其删除之后再重新创建(只适用于上传一张照片的情况)
if (uploadedFile.exists()) {
uploadedFile.delete();
}
item.write(uploadedFile);
message = "上传文件成功<br/><br/>基本信息如下:<br/>文件名:"
+ fileName + "<br/>文件类型:" + contentType
+ "<br/>文件大小:" + fileSize + "B";
imagepath = fileName;
i = 1;
} catch (Exception e) {
e.printStackTrace();
// return ;
}
} else {
}
} else {
// 7.1 是表单域, 把获取到得 表单域的 fieldName 和 value 放在 map 中.
// 获得表单中该字段的字段名
String fieldNameNor = item.getFieldName();
// 获得表单中与上面字段名对应的字段值
String value = item.getString("UTF-8");
paramMap.put(fieldNameNor, value);
}
}
}catch (FileUploadException e) {
i = 0;
message = "文件的内容过大,请上传小于4MB的文件";
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
JSP form添加属性enctype="multipart/form-data"