Java上传图片servlet和ajaxFileUpload上传和过滤器

本文详细介绍了一个基于Ajax的文件上传解决方案,包括所需库的下载、HTML页面配置、servlet处理及文件上传逻辑。通过使用commons-fileupload和commons-io库,配合ajaxFileUpload.js,实现了文件的异步上传功能。

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();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值