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/149505.html原文链接:https://javaforall.net

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


相关推荐

  • 常用数字音频功放芯片-音频放大器

    常用数字音频功放芯片-音频放大器功放作为各类音响器材设备中的重要组成部分,作用就是把来自音源或前级放大器的弱信号放大,推动音箱放声,一套良好的音响系统功放的作用功不可没。功放的主要性能指标有输出功率,频率响应,失真度,信噪比,输出阻抗,阻尼系数等。由于考虑功率、阻抗、失真、动态以及不同的使用范围和控制调节功能,不同的功放在内部的信号处理、线路设计和生产工艺上也各不相同,由于各厂家的测量方法不一样,所以出现了一些名目不同的叫法。例如额定输出功率,最大输出功率,音乐输出功率,峰值音乐输出功率。数字音频处理功放芯片在影响声卡的功能和性能

    2022年5月22日
    40
  • 二、八、十、十六进制转换(图解篇)「建议收藏」

    二、八、十、十六进制转换(图解篇)「建议收藏」一.本文所涉及的内容(Contents)本文所涉及的内容(Contents)背景(Contexts)进制转换算法(Convert)(二、八、十六进制)→(十进制)二进制→十进制八进制→十

    2022年8月6日
    2
  • 保护索引要注意的问题「建议收藏」

    保护索引要注意的问题

    2022年1月21日
    45
  • Object.entries

    Object.entries

    2021年6月9日
    258
  • 牛屎芯片 | 硬件之家「建议收藏」

    牛屎芯片 | 硬件之家「建议收藏」前言:牛屎芯片又叫邦定芯片或软封装芯片,一般应用于价格较为低廉的电子设备中。原文链接:http://www.allchiphome.com/post/cow-shit_chip一、牛屎芯片牛屎芯

    2022年8月2日
    3
  • java除法保留两位小数_JAVA除法保留小数点后两位的两种方法

    java除法保留两位小数_JAVA除法保留小数点后两位的两种方法1.利用Math.round()的方法:两个int型的数相除,结果保留小数点后两位:inta=1188;intb=93;doublec;c=(double)(Math.round(a*100/b)/100.0);//这样为保持2位打印结果:c=0.12c=newDouble(Math.round(a*1000/b)/1000.0);//这样为保持3位打印结果:c=0.0122.另一种办法i…

    2022年5月10日
    38

发表回复

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

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