h5拖拽上传图片

时间:2021-10-20 13:31:56

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!