标签:
function DragUploadFile(d) { this.dom = document.getElementById(d); //拖拽的Dom this.FileType; //上传文件类型限制 this.FileTypeNoMsg; //上传文件限制说明 this.imgCallback; //获取文件成功 回调方法 this.AjaxPath; //文件上传路径 this.AjaxCallback; //文件上传完成 回调方法 //阻止浏览器默认事件 document.addEventListener("dragleave", function(e) { e.preventDefault(); }, false); document.addEventListener("drop", function(e) { e.preventDefault(); }, false); document.addEventListener("dragenter", function(e) { e.preventDefault(); }, false); document.addEventListener("dragover", function(e) { e.preventDefault(); }, false); } //设置完毕加载绑定 DragUploadFile.prototype.Load = function() { var dom = this.dom; var FileType = this.FileType; var FileTypeNoMsg = this.FileTypeNoMsg; var Callback = this.Callback; var AjaxPath = this.AjaxPath; var imgCallback = this.imgCallback; var AjaxCallback = this.AjaxCallback; dom.addEventListener("drop", function(e) { e.preventDefault(); var fileList = e.dataTransfer.files; //获取文件列表 if (fileList.length == 0) { return; //没有文件返回 } var ifile; //文件对象 //检查文件类型 if (FileType != null) { if (fileList[0].type.indexOf(FileType) > -1) {
ifile = window.webkitUrl?window.webkitUrl.createObjectUrl(fileList[0]):window.URL.createObjectURL(fileList[0]); } else { alert(FileTypeNoMsg); return; } } if (imgCallback != null) { imgCallback(ifile); } if (AjaxPath != null) { //上传 UpAjax = new XMLHttpRequest(); UpAjax.open("post", AjaxPath, true); UpAjax.setRequestHeader("X-Requested-With", "XMLHttpRequest"); var postData = new FormData(); postData.append("pic", fileList[0]); UpAjax.send(postData); UpAjax.onreadystatechange = function() { if (UpAjax.status == 200 && UpAjax.readyState == 4) { //完成 //返回数据 var retVla = UpAjax.responseText; //eval(retF + "(‘"+retVla+"‘)"); AjaxCallback(retVla); } } } }, false); } //调用 //定义变量 盒子id var drag = new DragUploadFile("Drag"); //设置接收文件类型,和错误提示 可以不进行设置,默认为所有类型 drag.FileType="video"; drag.FileTypeNoMsg="请上传视频"; drag.imgCallback=function(file){};//设置获取到文件回调方法 //drag.AjaxPath="/Default/UpFile";//设置ajax文件上传地址 //drag.AjaxPath=function(data){alert(data)};//设置上传回调方法 //设置完毕,加载 drag.Load();
drop事件里因为this指向变了,又重新把属性声明了一遍。。。。。。。。。。等以后再重再写一遍
标签:
原文地址:http://www.cnblogs.com/-NaN/p/4937183.html