前几天用基础http协议实现单个文件的上传和下载,发现并不能满足项目的需求,比如一次上传下载多个文件、或者是限制上传文件的格式等。于是看了看SmartUpload这个打包好的组件,感觉还不错,分享给大家!(注:servlet实现的)
关于SmartUpload的介绍和优点就不再多说了,比如:使用简单、能全程控制上传、下载灵活等。
下载就开是使用SmartUpload来实现我们的需求
1:批量上传SmartUpload su = new SmartUpload();
//初始化对象
su.initialize(getServletConfig(), req, resp);
//设置上传文件大小
su.setMaxFileSize(1024*1024*10);
//设置所有文件的大小
su.setTotalMaxFileSize(1024*1024*100);
//设置允许上传文件类型
su.setAllowedFilesList("txt,jpg,gif");
String result = "上传成功!";
//设置禁止上传的文件类型
try {
//和setAllowedFilesList是相对的,一般项目保留一个就可以满足需求
su.setDeniedFilesList("rar,jsp,js");
//上传文件
su.upload();
int count = su.save(filePath);
System.out.println("上传成功" + count + "个文件!");
} catch (Exception e) {
result = "上传失败!";
//对异常作出不同的提示,如果感兴趣的话,可以 测试一下异常代号
if(e.getMessage().indexOf("1015")!=-1){
result = "上传失败:上传文件类型不正确!";
}else if(e.getMessage().indexOf("1010")!=-1){
result = "上传失败:上传文件类型不正确!";
}else if(e.getMessage().indexOf("1105")!=-1){
result = "上传失败:上传文件大小超出单个文件最大值!";
}else if(e.getMessage().indexOf("1110")!=-1){
result = "上传失败:上传文件总大小超出总文件最大值!";
}
e.printStackTrace();
}
2:批量下载
这里就只说一下思路,多个文件的下载,需要在下载前把文件打包,不然下载时浏览器会弹出多个提示下载框,个用户体验不好,具体实现就看项目代码把
本地测试地址:http://localhost:8080/fileBatchWithSmart/jsp/02.jsp
3:运行截图