vue上传图片组件编写

vue上传图片组件编写点击打开源码编写一个vue上传图片组件:1.首先得有一个[type=file]文件标签并且隐藏,changge事件来获取图片:2.触发隐藏的文件标签:(通过原生的click来触发)document.getElementById(‘upload_file’).click()3.获取file文件里面的值方法:fileChange($event)fileCha

大家好,又见面了,我是你们的朋友全栈君。

点击打开源码 https://github.com/317482454/vue_upload

在线查看地址:http://jqvue.com/demo/vue_upload/demo.html

编写一个vue上传图片组件:

1.首先得有一个[type=file]文件标签并且隐藏,changge事件来获取图片:

    <input @change="fileChange($event)" type="file" id="upload_file" multiple style="display: none"/>

2.触发隐藏的文件标签:(通过原生的click来触发)

  document.getElementById('upload_file').click()

3.获取file文件里面的值方法:fileChange($event)

  fileChange(el){
      if (!el.target.files[0].size) return;//判断是否有文件数量
      this.fileList(el.target.files);//获取files文件组传入处理
      el.target.value = ''//清空val值,以便可以重复添加一张图片
    }

4.处理files文件组

获取传入单个图片文件

 fileList(files){
      for (let i = 0; i < files.length; i++) {
        this.fileAdd(files[i]);
      }
    }

处理获取到的图片文件,统计文件大小,转图片为base64以供显示

 fileAdd(file){
      this.size = this.size + file.size;//总大小
      let reader = new FileReader();
      reader.vue = this;
      reader.readAsDataURL(file);
      reader.onload = function () {
        file.src = this.result;
        this.vue.imgList.push({
          file
        });
      }
    },

5.文件大小换算

   bytesToSize(bytes){
      if (bytes === 0) return '0 B';
      let k = 1000, // or 1024
        sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
        i = Math.floor(Math.log(bytes) / Math.log(k));
      return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];
    },


6.拖拽上传

<div class="upload_warp_right" @drop="drop($event)" @dragenter="dragenter($event)" @dragover="dragover($event)">
     或者将文件拖到此处
</div>
  dragenter(el){
      el.stopPropagation();
      el.preventDefault();
    },
    dragover(el){
      el.stopPropagation();
      el.preventDefault();
    },
    drop(el){
      el.stopPropagation();
      el.preventDefault();
      this.fileList(el.dataTransfer.files);
    }

最终效果如下:


vue上传图片组件编写


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149504.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言学生管理系统(上)

    大一上c语言学生管理系统*你好!这是你第一次使用c语言做完整的一个小程序,如果你想学习c语言不那么枯燥,可以仔细阅读这篇文章,了解一下c语言的基本语法知识。主要函数功能1.打印功能菜单2.录入学生信息。3.计算所以学生总分和平均分。4.根据学生分数由高到低输出学生信息。5.根据学生学号由小到大输出学生信息。6.输入学生学号查找该学生对应的信息。7.优秀、合…

    2022年4月9日
    43
  • 开发一款Android App,从零开始详细讲解[通俗易懂]

    开发一款Android App,从零开始详细讲解[通俗易懂]入门篇:第一篇:开发环境篇第二篇:材料设计篇第三篇:规范开发篇第四篇:从项目开发到上架篇(篇章调整,最后更新)进阶篇:第五篇:设计模式篇第六篇:网络请求篇(上)    网络请求篇(下)第七篇:图片处理篇第八篇:数据库篇第九篇:开源资源篇高阶篇:第十篇:自定义控件篇第十一篇:跨进程篇关于Demo写这个系列的文章的同时,也在做一个小Demo。功能很简单,利用豆瓣电影Api实现一款基于Android的电影集合的App。starmeonGitHub! 该项目的数据源来自于豆瓣;

    2022年5月4日
    47
  • 软件测试工程师经典面试题[通俗易懂]

    软件测试工程师经典面试题[通俗易懂]  软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作系统的使用、软件测试框架性的问题,测试环境搭建问题、当然还有一些自动化测试和性能测试的问题。测试工程师的面试题,基本上都是大同小异的,面试的核心主要在于框架模块(一到两年工作经验)。今…

    2022年7月15日
    15
  • PHP中encode和decode,关于encode和decode的用法和用途

    PHP中encode和decode,关于encode和decode的用法和用途摘要:

    2022年10月6日
    0
  • idea打包jar没有主清单属性_maven库中有jar包,但是引入不到

    idea打包jar没有主清单属性_maven库中有jar包,但是引入不到推荐必看:https://blog.csdn.net/persistencegoing/article/details/84376427问题:springboot项目通过maven打包程序后,直接执行jar包时,控制台显示“没有主清单属性”。解决:在maven的pom文件中,编写maven-jar-plugin的插件,具体如下<plugin>&…

    2022年9月5日
    3
  • CloudSim 学习实例1

    CloudSim 学习实例1Cloudsimexample1cloudsim教程例1解读创建一个含一台主机的数据中心,并在其上运行一个云任务代码packageorg.cloudbus.cloudsim.examples;/**Title:CloudSimToolkit*Description:CloudSim(CloudSimulation)Toolkitfor…

    2022年8月31日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号