亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用vue怎么實現一個桌面向網頁拖動文件的功能

發布時間:2021-03-01 14:38:16 來源:億速云 閱讀:284 作者:戴恩恩 欄目:開發技術

本文章向大家介紹利用vue怎么實現一個桌面向網頁拖動文件的功能的基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。

vue是什么軟件

Vue是一套用于構建用戶界面的漸進式JavaScript框架,Vue與其它大型框架的區別是,使用Vue可以自底向上逐層應用,其核心庫只關注視圖層,方便與第三方庫和項目整合,且使用Vue可以采用單文件組件和Vue生態系統支持的庫開發復雜的單頁應用。

不顯示圖片/播放視頻音頻代碼如下

<template>
 <div>
  <div v-on:dragover="tts" v-on:drop="ttrs" >
   {{dt}}
  </div>
  <div v-for="(item,index) in fileList" :key="index" >
   <p >{{item.name}}</p>
   <h6 >{{item.type}}</h6>
   <h7 >{{item.size | sizeType}}</h7>
   <button  @click="del(index)">刪除</button>
  </div>
 </div>
</template>

<script>
 export default {
  name: "trs",
  data(){
   return{
    dt:"",
    fileList:[]
   }
  },
  filters:{
   sizeType(val){
    let kbs = val/1024;
    let mbs = 0;
    let gbs = 0;
    if(kbs>=1024){
     mbs = kbs/1024;
    }
    if(mbs>=1024){
     gbs=mbs/1024
     return gbs.toFixed(2)+"GB";
    }else if (mbs>=1){
     return mbs.toFixed(2)+"MB"
    }else {
     return kbs.toFixed(2)+"KB"
    }
   }
  },
  mounted() {
   let vm = this;
   window.addEventListener("dragdrop", this.testfunc, false);


   document.addEventListener("dragover",function () {
    console.log(111)
    vm.dt = "拖動到此處上傳文件"
    console.log(vm.dt)
   })
  },
  methods:{
   testfunc(event) {
    alert("dragdrop!");
    event.stopPropagation();
    event.preventDefault();
   },
   del(index){
    this.fileList.splice(index,1)
    if(this.fileList.length==0){
     this.dt = ""
    }
   },
   tts(e){
    console.log(e)
    this.dt = "拖動到此處上傳文件"
   },
   ttrs(e){
    console.log(e)
    console.log(e.dataTransfer.files)
    let datas = e.dataTransfer.files;
    datas.forEach(item=>{
     this.fileList.push(item)
    })
    e.stopPropagation();
    e.preventDefault();
    this.dt = "上傳完成,可繼續上傳"

   }
  }
 }
</script>

<style scoped>

</style>

如果想要顯示圖片/播放視頻/播放音頻

這里我默認顯示/播放最后一個上傳文件 根據需求修改即可

<template>
 <div>
 <div
  v-on:dragover="tts"
  v-on:drop="ttrs"
  
 >
  {{ dt }}
 </div>
 <div
  v-for="(item, index) in fileList"
  :key="index"
  
 >
  <p
  
  >
  {{ item.name }}
  </p>
  <h6 >
  {{ item.type }}
  </h6>
  <h7 >
  {{ item.size | sizeType }}
  </h7>
  <button  @click="del(index)">刪除</button>
 </div>
 <div >
  <img v-if="isImage" :src="srcs"  />
  <video v-if="isVideo" controls :src="srcs" ></video>
  <audio v-if="isAudio" controls :src="srcs" ></audio>
 </div>
 </div>
</template>

<script>
export default {
 name: "trs",
 data() {
 return {
  dt: "",
  fileList: [],
  srcs:"",
  isImage:false,
  isAudio:false,
  isVideo:false
 };
 },
 filters: {
 sizeType(val) {
  let kbs = val / 1024;
  let mbs = 0;
  let gbs = 0;
  if (kbs >= 1024) {
  mbs = kbs / 1024;
  }
  if (mbs >= 1024) {
  gbs = mbs / 1024;
  return gbs.toFixed(2) + "GB";
  } else if (mbs >= 1) {
  return mbs.toFixed(2) + "MB";
  } else {
  return kbs.toFixed(2) + "KB";
  }
 }
 },
 mounted() {
 let vm = this;
 window.addEventListener("dragdrop", this.testfunc, false);

 document.addEventListener("dragover", function() {
  console.log(111);
  vm.dt = "拖動到此處上傳文件";
  console.log(vm.dt);
 });
 },
 methods: {
  readFile(file){
   let vm = this;
   let reader = new FileReader();
   reader.readAsDataURL(file)
   reader.onload = function () {
    let type = file.type.substr(0,5);
    if(type=="image"){
     vm.isImage = true;
     vm.isAudio =false;
     vm.isVideo = false;
    }else if(type=="audio"){
     vm.isImage = false;
     vm.isAudio =true;
     vm.isVideo = false;
    }else if(type=="video"){
     vm.isImage = false;
     vm.isAudio = false;
     vm.isVideo = true;
    }else {
     alert("不是圖片/視頻/音頻")
    }
    vm.srcs = reader.result;
    // this.$nextTick(()=>{
    //
    // })
   }
  },
 testfunc(event) {
  alert("dragdrop!");
  event.stopPropagation();
  event.preventDefault();
 },
 del(index) {
  this.fileList.splice(index, 1);
  if (this.fileList.length === 0) {
  this.dt = "";
  }
 },
 tts(e) {
  console.log(e);
  this.dt = "拖動到此處上傳文件";
 },
 ttrs(e) {
  console.log(e);
  console.log(e.dataTransfer.files);
  let datas = e.dataTransfer.files;
  datas.forEach(item => {
  this.fileList.push(item);
  });
  this.readFile(this.fileList[this.fileList.length-1])

  e.stopPropagation();
  e.preventDefault();

  this.dt = "上傳完成,可繼續上傳";
 }
 }
};
</script>

<style scoped></style>

以上就是小編為大家帶來的利用vue怎么實現一個桌面向網頁拖動文件的功能的全部內容了,希望大家多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

绥滨县| 临澧县| 会宁县| 定南县| 河东区| 驻马店市| 保靖县| 长沙市| 西乡县| 广元市| 巴东县| 广昌县| 江永县| 景德镇市| 文昌市| 锡林郭勒盟| 克什克腾旗| 定襄县| 墨竹工卡县| 随州市| 浦城县| 新和县| 朔州市| 太康县| 嘉峪关市| 东阿县| 神木县| 昌平区| 武夷山市| 昭通市| 理塘县| 犍为县| 礼泉县| 东兰县| 凤翔县| 余庆县| 阳信县| 舟山市| 巴林右旗| 深水埗区| 泽库县|