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)
上一篇 2022年6月24日 下午7:36
下一篇 2022年6月24日 下午7:36


相关推荐

  • 5 分钟用满血 DeepSeek R1 搭建个人 AI 知识库(含本地部署教程)

    5 分钟用满血 DeepSeek R1 搭建个人 AI 知识库(含本地部署教程)

    2026年3月16日
    2
  • 项目与数据库时差8小时解决,设置SpringBoot的时区

    项目与数据库时差8小时解决,设置SpringBoot的时区Componentpub PostConstruc TimeZone setDefault TimeZone getTimeZone UTC TimeZone setDefault TimeZone getTimeZone Asia Shanghai TimeZone setDefault Time

    2025年6月8日
    5
  • 三阶魔方第七步公式_四阶魔方公式图解七步

    三阶魔方第七步公式_四阶魔方公式图解七步关于魔方,你需要知道:无论怎么转,每一个面的最中间的块[图:1-面中心块]是固定不动的。所以每一面的中心块颜色决定了该面的颜色。无论怎么转,位于顶角的有三种颜色的块[图:2-顶角块]永远会在某一个顶角;位于棱中间的有两种颜色的块[图:2-棱中间块]永远会在某一个棱的中间。所谓的公式,就是用一定的套路告诉你每个面该怎么转。所用到的字母UDLRFB分别代表魔方的上下左右前后…

    2025年6月8日
    4
  • 串口调试助手fx2n_安信可串口调试助手

    串口调试助手fx2n_安信可串口调试助手安信可串口调试助手是由安信可官方出品的一款非常好用的串口调试工具,利用安信可串口调试助手可以实现电脑和模块之间的串口通信,非常方便,有需要可以下载使用。相关软件软件大小版本说明下载地址安信可串口调试助手是由安信可官方出品的一款非常好用的串口调试工具,利用安信可串口调试助手可以实现电脑和模块之间的串口通信,非常方便,有需要可以下载使用。功能介绍ESP8266的串口调试助手,下载即用,可以实现电脑和模…

    2022年5月3日
    178
  • 石家庄职业技术学院多少分能上_石家庄职业技术学院单招录取分数线

    石家庄职业技术学院多少分能上_石家庄职业技术学院单招录取分数线本文主要介绍石家庄职业技术学院2020招生录取分数线的相关信息,对学校感兴趣,想要报考该校的同学请信息的阅读文章,若有其他有关该校的招生方面的信息可以直接咨询网站的在线老师,向他们进行咨询.一、石家庄职业技术学院招生录取分数线石家庄职业技术学院有中央财政支持高等职业学校提升专业2个,河北省示范院校重点建设专业8个(省级示范专业有重叠,合计共10个省级重点建设专业),河北省教育教学改革示范专业6个,…

    2025年11月9日
    6
  • TCP协议-TCP粘包问题

    TCP协议-TCP粘包问题一 前言我们知道 TCP 是一个面向字节流的传输层协议 流 意味着 TCP 所传输的数据是没有边界的 这不同于 UDP 协议提供的是面向消息的传输服务 其传输的数据是有边界的 TCP 的发送方无法保证对方每次收到的都是一个完整的数据包 于是就有了粘包 拆包问题的出现 粘包 拆包问题只发生在 TCP 协议中 二 什么是粘包 拆包 假设客户端向服务器连续发送了两个数据包 用 packet1 和 packet2 来表示 那么服务端收到的数据可以分为下面三种情况 第一种情况 接收端正常

    2026年3月18日
    2

发表回复

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

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