点击打开源码 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 1024sizes = ['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上传图片组件编写相关推荐

  1. vue上传图片组件(支持拖拽文件夹上传)

    点击打开源码 https://github.com/317482454/vue_upload 在线查看地址:http://jqvue.com/demo/vue_upload/demo.html 1.获 ...

  2. 用vue优雅地编写UI组件的几条指导原则

    前言 最近在尝试写几个UI组件,并通过阅读element-ui的源码,与其反复比较,然后认真思考,最后总结出一些自己的一些心得和体会.在造轮子的过程中,既巩固了html,css,js基础,又加深了对v ...

  3. vue 上传图片视频组件,可拍照选择照片,解决苹果手机拍照旋转问题

    vue 上传图片视频组件,可拍照选择照片,解决苹果手机拍照旋转问题 参考文章: (1)vue 上传图片视频组件,可拍照选择照片,解决苹果手机拍照旋转问题 (2)https://www.cnblogs. ...

  4. Vue组件编写之Alert提示框组件编写

    Alert提示框的vue组件编写 最近一直学习vue,跟着视频敲代码,敲了两三个组件后,终于对编写组件有一个大致的思路了,以下通过编写一个alert提示框组件大致梳理一下我编写组件的思路. 主要分为三 ...

  5. 15 Vue中子组件样式的绑定和行内样式模版编写

    [基础]模板样式绑定2-进阶 场景 子组件的样式绑定 如何区分父子组件 子组件使用样式的小坑 行内样式的编写 场景 这篇文章继续学习Vue的模板样式绑定.上篇文章你已经对Vue中的样式绑定有一个基本了 ...

  6. 基于vue element-ui 封装上传图片组件 功能:上传,删除,预览,上传图片水印,拖拽排序,上传进度条等

    学习目标: 我们在开发后台时肯定避免不了上传图片的功能 例如: 上传图片回显 上传完成 : 预览查看 , 删除等 如果是图片列表,还可能让你拖动图片排序 有的后台项目可能要给图片添加水印,添加标记 有 ...

  7. 使用Tape和Vue Test Utils编写快速的Vue单元测试

    by Edd Yerburgh 埃德·耶堡(Edd Yerburgh) 使用Tape和Vue Test Utils编写快速的Vue单元测试 (Write blazing fast Vue unit t ...

  8. 开源Vue表格组件,表格插件源码

    开源Vue表格组件,表格插件源码 前言: 关于html里面原生的table,通常满足不了程序员的要求.所以开发了一款表格插件,其功 能有: 1 导入json格式数据后,自动填充表格.表格长宽自适应.排 ...

  9. 构建你的第一个Vue.js组件

    我记得当时我拿起CakePHP,我很喜欢,开始使用它是多么容易.这些文档不仅结构合理,详尽无遗,而且用户友好.多年以后,这正是我在Vue.js中感受到的.然而,与Cake相比,Vue文档仍然缺少一件事 ...

最新文章

  1. python 结尾回车_理解不了Python正则表达式?我帮你搞定
  2. 用IDEA debug按键功能
  3. 虚拟机Centos系统下hadoop集群中静态IP配置
  4. python控制键盘事件、粘贴_python调用键盘控制游戏事件
  5. Ubuntu18系统安装使用Nginx
  6. Simplify Path
  7. 《微信背后的产品观》一书
  8. JLink OB STM32F072 固件的过程
  9. linux下 DDR,SD卡速度测试
  10. 正则表达式匹配身份证号
  11. 如何将pdf转换成txt转换器破解版
  12. 怎样查找MP3音乐链接地址 用于QQ空间背景
  13. 35年老程序员个人谈:C语言时代行将落幕
  14. MySQL数据库的主从同步和读写分离
  15. 2021辽宁省大学生程序设计大赛部分题解
  16. js 批量坐标转换经纬度_如何批量转换为百度经纬度
  17. 基本题型记录-二叉树中序遍历
  18. 如何成为一位数据科学家
  19. 学习签名signature 的使用
  20. [VCam和VSC]-VCam虚拟摄像头和 VSC虚拟声卡的使用方法

热门文章

  1. java线程顺序输出_多线程按顺序输出ABC
  2. 多租户系统技术实现mysql_SaaS “可配置”和“多租户”架构的几种技术实现方式...
  3. excel求期望_商务数据分析考试:决策树分析(Excel)-安聪
  4. 怎么用php操作mysql删除数据库代码_如何使用php操作mysql的增删改查?
  5. layui关闭表格编辑_Layui表格table关闭拖拽列宽、禁用拖拽列宽
  6. python【蓝桥杯vip练习题库】ADV-73数组输出
  7. html纯css页面滑动效果,纯css3滑动按钮动画效果
  8. python面向对象图片_Python面向对象-概念、类、实例
  9. 进阶学习(4.1) JVM结构和原理
  10. 商丘网络推广中网站内部优化需要注意的要点有哪些?