1、需要ajaxFileUpload.js包
2、下载地址:
commons-fileupload-1.3.2.jar
commons-io-2.5.jar
这两个jar可以去菜鸟教程下载
https://www.runoob.com/jsp/jsp-file-uploading.html
ajaxFileUpload.js:http://files.cnblogs.com/files/kissdodog/ajaxfileupload_JS_File.rar
3、html页面
3、如果使用过滤一定要将js给放开,否则无法使用ajaxFileUpload
4、servlet:
protected void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
// 获取到当前服务器所在的路径 保存文件的路径
String serverPath = req.getSession().getServletContext().getRealPath("/");
// 设置保存上传文件的路径
String saveDirPath = serverPath + “img”;
File saveDirPathFileObj = new File(saveDirPath);
// 如果当用来存放文件的目录不存在时,要创建该目录
if (!saveDirPathFileObj.exists()) {
saveDirPathFileObj.mkdirs();
}
// 1、创建一个解析器工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置工厂的缓存区大小
factory.setSizeThreshold(5 * 1024);
// 文件上传的解析器(文件上传对象)
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置上传文件的最大值
upload.setSizeMax(3 * 1024 * 1024);
// 设置编码格式
upload.setHeaderEncoding(“UTF-8”);
// 上传以后的文件名
List uploadFileNames = new ArrayList();
List fileItems;
try {
//解析Request请求
fileItems = upload.parseRequest(req);
for (FileItem file : fileItems) {
if(file.isFormField()) {
//像普通表单一样处理 获取data 数据
String fieldName = file.getFieldName();
String value=file.getString();
//System.out.println(fieldName);
}else {
//上传文件处理
// 新的文件名
String saveFileName = UUID.randomUUID().toString().replace("-", “”);
// 文件的后缀
String oldFileName = new String(file.getName().getBytes(),//获取文件地址
“UTF-8”);//防止乱码
System.out.println(“oldFileName” + oldFileName);
String fileType = oldFileName.substring(oldFileName.lastIndexOf("."));
// 新的文件路径
String saveFilePath = saveDirPath + File.separator
+ saveFileName + fileType;
uploadFileNames.add(saveFileName + fileType);
System.out.println(“saveFilePath”+saveFilePath);
// 保存上传的文件
try {
file.write(new File(saveFilePath));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}