91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

利用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

巧家县| 顺平县| 宁海县| 沂水县| 天柱县| 苗栗市| 中宁县| 酒泉市| 那坡县| 遵义市| 三明市| 通辽市| 巧家县| 定陶县| 六安市| 连南| 淳安县| 黄大仙区| 邓州市| 海原县| 昆山市| 临湘市| 临洮县| 南投市| 石柱| 永春县| 高密市| 湟中县| 嘉义市| 天津市| 巴林右旗| 余江县| 辽阳县| 杭锦后旗| 溧阳市| 诸暨市| 新沂市| 手游| 伊宁市| 仁寿县| 辽源市|