private String uploadPath = "E:\\upload\\"; // 上传文件的目录
private String fileName=null;
// 保存路径
File saveDir = new File(uploadPath);
// 如果目录不存在,就创建目录
if (!saveDir.exists()) {
saveDir.mkdir();
}
// 创建文件上传核心类
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(factory);
// 设置编码
sfu.setHeaderEncoding("UTF-8");
// 设置上传的单个文件的最大字节数为2M
sfu.setFileSizeMax(1024 * 1024 * 4);
try {
// 处理表单请求
List<FileItem> itemList = sfu.parseRequest(request);
for (FileItem fileItem : itemList) {
// 对应表单中的控件的name
String fieldName = fileItem.getFieldName();
System.out.println("控件名称:" + fieldName);
// 如果是普通表单控件
if (fileItem.isFormField()) {
String value = fileItem.getString();
// 重新编码,解决乱码
value = new String(value.getBytes("ISO-8859-1"), "UTF-8");
System.out.println("普通内容:" + fieldName + "=" + value);
// 上传文件
} else {
// 获得文件大小
Long size = fileItem.getSize();
// 获得文件名
fileName = fileItem.getName();
System.out.println("文件名:" + fileName + "\t大小:" + size
+ "byte");
// 设置不允许上传的文件格式
if (fileName.endsWith(".exe")) {
request.setAttribute("msg", "不允许上传的类型!");
} else {
// 将文件保存到指定的路径
File file = new File(uploadPath, fileName);
fileItem.write(file);
request.setAttribute("msg", "上传成功!");
}
}
}
} catch (FileSizeLimitExceededException e) {
request.setAttribute("msg", "文件太大");
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}