原生JavaScript实现多文件拖拽上传

前言

今天在使用joomla开发表单页面的时候,有一个拖拽文件上传。于是在这里总结了一下。


一、如何实现拖拽上传

这里需要使用到浏览器拖拽事件,拖拽事件有很多,这里我们只需要使用drop这个事件。

drop:鼠标在拖放目标上释放时,在拖放目标上触发,此时监听器需要收集数据并执行所需操作,如果是从操作系统拖放文件到浏览器,需要取消浏览器的默认行为。

二、使用步骤

拖拽区域html代码

      <div id="drop_area">
        <div>将您的产品附件拖拽到此处</div>
        <input class="upload" type="file" name="name" multiple="multiple"/>
        <div>请将文件控制在 100MB 以内</div>
      </div>
  
document.addEventListener("drop",function(e){  //拖离   
    e.preventDefault();      
})  
document.addEventListener("dragleave",function(e){  //拖后放   
    e.preventDefault();      
})  
document.addEventListener("dragenter",function(e){  //拖进  
    e.preventDefault();      
})  
document.addEventListener("dragover",function(e){  //拖来拖去    
    e.preventDefault();      
})  
box.addEventListener("drop",function(e){
    var fileList = Array.from(e.dataTransfer.files);
    fileList.forEach((item) => {
      if(Math.round(item.size / 1024 /1024) > 100){
        alert("文件内容超过100M,请重新上传");
        return;
      }
  },false)

这里fileList里面的就是你上传的文件,你只需要对数据进行简单分装,通过ajax发送给后台。

总结

在这里我有一个疑问,就是通过这种drop获取到的只有文件的名字大小以及格式,但是并没有路径。没有路径那么这个文件要怎么存储在后台呢?大家可以给我评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值