h5实现拖拽上传图片
本文将为大家介绍如何通过js实现拖拽上传图片。
首先我们要禁用调浏览器默认的拖拽事件:
window.onload = function(){
//拖离
document.addEventListener('dragleave',function(e){e.preventDefault();});
//拖后放
document.addEventListener('drop',function(e){e.preventDefault();});
//拖进
document.addEventListener('dragenter',function(e){e.preventDefault();});
//拖来拖去
document.addEventListener('dragover',function(e){e.preventDefault();});
};
然后在网页上定义一个拖拽放置区域,也就是我们要将图片放置回显的区域:
<div id="dragImg"></div>
绑定拖拽事件:
var box = document.getElementById("dragImg");
box.addEventListener("drop",function(e){
e.preventDefault(); //取消默认浏览器拖拽效果
var fileList = e.dataTransfer.files; //获取文件对象
if(fileList.length == 0){return false;}
if(fileList[0].type.indexOf('image') === -1){
alert('您拖的不是图片!')
return false;
}
var img = window.URL.createObjectURL(fileList[0]);
// var filesize = Math.floor((fileList[0].size)/1024);
$("#dragImg").css({"background":"url("+img+") no-repeat center center","backgroundSize":"100% 100%"});
var imgDatatype = filename.split(".")[1];
var formData = new FormData();
formData.append("name",fileList[0],imgDatatype); //name:为一半表单上传时的元素name是和后台约定好的
$.ajax({
type:"post",
url:'your Ajax url',//ajaxurl
async:false,
dataType:"text",
data:formData,
processData : false,
contentType : false,
success:function(data){
if(data){
$("#dragImg").css({"background":"url("+data+") no-repeat center center","backgroundSize":"100% 100%"});
}else{
console.log(data)
}
},error:function(e){
console.log(e)
}
})
},false);
这就是图片拖拽上传的前端处理方法,over!