您好,登錄后才能下訂單哦!
本文章向大家介紹利用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怎么實現一個桌面向網頁拖動文件的功能的全部內容了,希望大家多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。