首页前端开发JavaScriptvue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)

vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)

时间2024-01-31 23:50:02发布访客分类JavaScript浏览827
导读:收集整理的这篇文章主要介绍了vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频 ,觉得挺不错的,现在分享给大家,也给大家做个参考。 效果若使用 请自行优化代码和样式不显示图片...
收集整理的这篇文章主要介绍了vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频),觉得挺不错的,现在分享给大家,也给大家做个参考。

效果

若使用 请自行优化代码和样式

不显示图片/播放视频音频代码如下

template>
     div>
      div v-on:Dragover="tts" v-on:drop="ttrs" style="width: 800px;
    height: 200px;
    border: 1px solid black;
    font-Size: 40px;
    line-height: 200px">
   {
{
dt}
}
      /div>
      div v-for="(ITem,index) in fileList" :key="index" style="width: 800px;
    height: 200px;
    border: 1px solid black;
    font-size: 40px;
    position: relative;
    top:10px">
       p style="font-size: 20px;
    float: left;
    position: relative;
    left: 20pxword-wrap:break-word;
    word-break:normal;
    ">
{
{
item.name}
}
    /p>
       h5 style="float:right;
    position: absolute;
    top: 80px;
    right: 20px">
{
{
item.tyPE}
}
    /h5>
       h6 style="position: absolute;
    top: 80px;
    float: left;
    left: 20px">
{
{
item.size | sizeType}
}
    /h6>
       button style="float: right" @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"  style="width: 800px;
    height: 200px;
    border: 1px solid black;
    font-size: 40px;
    line-height: 200px" >
  {
{
 dt }
}
     /div>
     div  v-for="(item, index) in fileList"  :key="index"  style="width: 800px;
    height: 200px;
    border: 1px solid black;
    font-size: 40px;
    position: relative;
    top:10px" >
      p  style="font-size: 20px;
    float: left;
    position: relative;
    left: 20pxword-wrap:break-word;
    word-break:normal;
    "  >
  {
{
 item.name }
}
      /p>
      h5 style="float:right;
    position: absolute;
    top: 80px;
    right: 20px">
  {
{
 item.type }
}
      /h5>
      h6 style="position: absolute;
    top: 80px;
    float: left;
    left: 20px">
  {
{
 item.size | sizeType }
}
      /h6>
      button style="float: right" @click="del(index)">
    删除/button>
     /div>
     div style="position:relative;
    top: 100px">
      img v-if="isImage" :src="srcs" style="width: 800px" />
      video v-if="isVideo" controls :src="srcs" style="width: 800px">
    /video>
      audio v-if="isAudio" controls :src="srcs" style="width: 800px">
    /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实现桌面向网页拖动文件(可显示图片/音频/视频)的文章就介绍到这了,更多相关vue拖动文件内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • electron+vue实现div contenteditable截图功能
  • vue打开新窗口并实现传参的图文实例
  • vue3.0封装轮播图组件的步骤
  • Vue基本指令实例图文讲解
  • vue仿携程轮播图效果(滑动轮播,下方高度自适应)
  • vue+echarts实现中国地图流动效果(步骤详解)
  • 使用vue3重构拼图游戏的实现示例
  • 如何在vue 中使用柱状图 并自修改配置
  • vue 实现无规则截图

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: 一起来了解一下JavaScript的预编...下一篇:three.js 实现露珠滴落动画效果的...猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
本文地址: https://pptw.com/jishu/594642.html
C语言中main函数可以在什么位置 C语言中 gets 和 getchar 区别?

游客 回复需填写必要信息