拖拽-上傳

拖拽上傳事件:

ondragenter    拖着東西進入;

ondragleave    拖着東西離開;

ondragover      懸停;

ondrop             鬆手;

小demo:

client端代碼:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <style>
    .drag {
      width: 400px;
      height: 150px;
      position: absolute;
      top: 50%;
      left: 50%;
      margin-top: -75px;
      margin-left: -200px;
      text-align: center;
      line-height: 150px;
      border: 1px solid balck;
      background-color: #ccc;
    }
  </style>
</head>

<body>
  <div class="drag">
    拖拽上傳
  </div>
</body>
<script>
  window.onload = function () {
    let div1 = document.querySelector('.drag');
    div1.ondragenter = () => {
      console.log('aaa');
      div1.innerHTML = '鬆手';
    }
    div1.ondragleave = () => {
      div1.innerHTML = '拖拽上傳';
    }
    div1.ondragover = () => { // 只要鼠標一直沒有鬆手,並且一直沒有離開,就會一直觸發
      console.log('ondragover');
      return false; // 不阻止默認事件,ondrop事件不會觸發
    }
    div1.ondrop = (event) => {
      // console.log(event.dataTransfer.files);
      let data = new FormData();
      Array.from(event.dataTransfer.files).forEach(file => {
        data.append('f1',file);
      });
      let OAjax = new XMLHttpRequest();
      OAjax.open('post','http:localhost:3000/upload');
      OAjax.send(data);
      OAjax.onreadystatechange = function() {
        if(OAjax.readyState === 4) {
          if(OAjax.status >= 200 && OAjax.status < 300 || OAjax.status == 304) {
            alert('上傳成功');
          } else {
            alert('上傳失敗')
          }
        }
      }
      div1.innerHTML = '拖拽上傳';
      return false; // 阻止默認事件
    }
  }
</script>

</html>

server端代碼:

const express = require('express'); // 主體
const body = require('body-parser');  // 接受普通POST數據
const multer = require('multer');   // 接收文件POST數據

let server = express();


// 中間件
server.use(body.urlencoded({extended: false}));

let multerObj = multer({dest: './upload/'}); // 上傳到哪裏去
server.use(multerObj.any()); // 任何

server.post('/upload',(req,res)=>{
  res.header('Access-Control-Allow-Origin','*');  // *號允許所有的域名,跨域;不安全
  res.send('ok');
  console.log(req.body);
  console.log(req.files);
});

server.listen(3000);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章