自制文件上传js控件可以支持IE,Chrome,Firefox等

复制代码代码如下所示:
(函数(){())
如果(窗口。FileUpload){
返回;
}
window.fileupload =功能(ID,URL){
this.id = ID;
this.autoupload =真;
this.url =网址;
this.maxsize = null;
this.extensions = null;
this.dropid = null;
};

window.fileupload.prototype.init =函数(){
var obj =这;
($ # +这个ID)。变化(函数(){
如果(obj。autoupload){
Obj.upload();
}
});
如果(this.supportsformdata()){
如果(this.dropid!= NULL){
VaR下降=美元(' # +本。dropid){ 0 };
Drop.addEventListener(DragOver
e.stoppropagation();
E.preventDefault();
($ # + obj。dropid)。AddClass(DragOver );
},假);
Drop.addEventListener(接触
($ # + obj。dropid)。RemoveClass(DragOver );
},假);
Drop.addEventListener(滴
e.stoppropagation();
E.preventDefault();
($ # + obj。dropid)。RemoveClass(DragOver );
obj。_uploadusingformdata(e.datatransfer。文件{ 0 });
},假);
}
{人}
如果(this.dropid!= NULL){
($ # +本。dropid)(隐藏);
}
}
};

fileupload.prototype.supportsformdata =函数(){
返回window.formdata!=定义;
};

fileupload.prototype.upload =函数(){
如果(this.supportsformdata()){
这个_uploadusingformdata($(# +这个ID){ 0 }。文件{ 0 });
{人}
这_uploadusingframe();
}
};

FileUpload。原型。_uploadusingframe =函数(){
var obj =这;
VaR框架= $(美元的# uploadframe);
如果(帧= = 0美元){
$ =($);
frame.appendto美元(体);
frame.load美元(函数(){()
无功响应= frame.contents美元()文本();
{试
var json = $ parseJSON(响应);
$(obj)。Trigger(onload
} catch(前){
$(obj)。Trigger(误差
}
});
}
VaR形式=美元(# +这个ID)。最近(形式){ 0 };
form.target = 'uploadframe;
form.submit();
};

FileUpload。原型。_uploadusingformdata =功能(文件){
var obj =这;
新的XMLHttpRequest(XHR)var =;
Xhr.addEventListener(负荷
var json =美元。parseJSON(XHR。响应);
$(obj)。Trigger(onload
},假);
Xhr.addEventListener(误差
$(obj)。Trigger(误差
},假);
Xhr.upload.addEventListener(进步
如果(e.lengthcomputable){
$(obj)。Trigger(进步
}
},假);
Xhr.open(后

如果(obj.maxsize!= NullFile。大小> obj为){
$(obj)。Trigger(onmaxsizeerror );
返回;
}
如果(obj.extensions!= NULL){
变量名= file.name;
VaR Ext = name.substring(name.lastindexof(,),名字的长度)的ToLowerCase();
如果(obj.extensions.indexof(EXT)<0){
$(obj)。Trigger(onextensionerror );
返回;
}
}
var =新的表单(表单);
formdata.append(文件
Xhr.send(表单);
};

fileupload.prototype.onload =功能(处理器){
$(这)。Bind(onload
Handler handler(args);
});
};

fileupload.prototype.onprogress =功能(处理器){
$(这)Bind(进步。
Handler handler(加载,总计);
});
};

fileupload.prototype.onerror =功能(处理器){
$(这)。Bind(误差
Handler handler(错误);
});
};

fileupload.prototype.onmaxsizeerror =功能(处理器){
$(这)。Bind(onmaxsizeerror
};

fileupload.prototype.onextensionerror =功能(处理器){
$(这)。Bind(onextensionerror
};
});