前一阵子,脑袋突然冒出在Java web里,批量上传文件的问题。struts原本有控件可以一次上传多个文件,但是需要一个一个选择文件,用户体检肯定不用说了。要是能够类似QQ图像上传不是挺好的。
于是,找了下资料。看到SWFUpload可以支持批量上传。于是动手感受下。可是被一个问题卡住了,SWFUpload有默认的错误信息,可是要自定义不知道该怎么办了。比如,对一个用户的上传总容量有控制,超过这个总容量就不能上传文件。这个一般都是要在后台代码里处理的。半天没找到相关资料,自己摸索下,终于找到一个方法,不知道是好是坏,先将就用了。
不知不觉说了这么多废话。直接点吧。
首先,自定义错误:在SWFUpload.js里错误代码列表里增加自定义错误代码UPLOAD_LIMIT_CAPACITY : -300。
SWFUpload.UPLOAD_ERROR = {
HTTP_ERROR : -200,
MISSING_UPLOAD_URL : -210,
IO_ERROR : -220,
SECURITY_ERROR : -230,
UPLOAD_LIMIT_EXCEEDED : -240,
UPLOAD_FAILED : -250,
SPECIFIED_FILE_ID_NOT_FOUND : -260,
FILE_VALIDATION_FAILED : -270,
FILE_CANCELLED : -280,
UPLOAD_STOPPED : -290,
UPLOAD_LIMIT_CAPACITY : -300
};
接下来,在uploadSuccess 函数里增加调用上传文件错误的方法
SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {
if(serverData == -1000){
this.uploadError(file, -300, "图片空间已满");
return;
}
file = this.unescapeFilePostParams(file);
this.queueEvent("upload_success_handler", [file, serverData, responseReceived]);
};
再接下来,当然就是在uploadError函数里,添加错误信息了。
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_CAPACITY:
imageName = "图片空间已满!";
break;
至此,准备工作做好。就等被触发了。看官应该知道是在action里传-1000这个值到前台了。
if (isNotcapacity()) {//判断是否空间已满
HttpServletResponse response = getResponse();
response.setContentType("text/html; charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println("-1000");
out.flush();
out.close();
return;
}
OK,检查下是不是可行了吧!