SWFUpload是一个基于flash与javascript的客户端文件上传组件。
1、handlers.js文件
完成文件入列队(fileQueued) →
完成选择文件(fileDialogComplete) → 开始上传文件(uploadStart) → 上传处理(uploadProgress) → 上传成功(uploadSuccess) → 上传完成(uploadComplete) →
列队完成(queueComplete)
如上所示,单选文件顺序执行以上回调函数,需要注意的是选择多个文件,fileQueued、queueComplete只会执行一次,而fileDialogComplet...→ uploadComplete每个文件都执行一次。
参数file是一个javascript对象,其结构如下:
{
id : string, //SWFUpload为队列中的文件生成的ID
index : number, //文件的索引值,使用getFile(index)可以获取该文件
name : string, //原文件名,不包含原文件目录
size : number, //文件的尺寸,单位:byte
type : string, //文件类型
creationdate : Date, //文件的创建时间
modificationdate : Date, //文件的最后修改时间
filestatus : number, //文件在上传队列中的状态,可以使用SWFUpload.FILE_STATUS比较值
}
2、批量上传
上传文件只需要调用SWFUpload的startUpload函数即可,如果队列中有多个文件,调用startUpload()后只会上传第一个未上传的文件,要批量上传只要设置上传文件成功后,再次调用开始上传方法。
代码 复制 - 运行
function uploadComplete(file) {
if (this.getStats().files_queued === 0) {
document.getElementById(this.customSettings.cancelButtonId).disabled = true;
} else {
this.startUpload();
}
}
3、文件上传限制
刊登时直接设置file_upload_limit参数即可以,
如果是修改物件,剩余上传文件数 = file_upload_limit - this.getStats().successful_uploads
回调函数swfupload_loaded_handler中设置如下,详细见handlers.js
代码 复制 - 运行
var stats = self.getStats();
self.customSettings.has_upload_num = parseInt(self.customSettings.has_upload_num); //已上传文件总数(修改)
if (self.customSettings.has_upload_num > 0) {
stats.successful_uploads = self.customSettings.has_upload_num;
self.setStats(stats);
}