vue上传图片组件编写代码


Posted in Javascript onJuly 26, 2017

本文实例教大家如何编写一个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://github.com/317482454/vue_upload

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery.lazyload  实现图片延迟加载jquery插件
Feb 06 Javascript
菜鸟javascript基础资料整理3 正则
Dec 06 Javascript
JS操作Cookies包括(读取添加与删除)
Dec 26 Javascript
ListBox实现上移,下移,左移,右移的简单实例
Feb 13 Javascript
node.js中的fs.lchmodSync方法使用说明
Dec 16 Javascript
JavaScript中对象介绍
Dec 31 Javascript
js库Modernizr的介绍和使用
May 07 Javascript
JavaScript encodeURI 和encodeURIComponent
Dec 04 Javascript
JQuery ztree 异步加载实例讲解
Feb 25 Javascript
BootStrap的JS插件之轮播效果案例详解
May 16 Javascript
javascript基本数据类型及类型检测常用方法小结
Dec 14 Javascript
详解vue-cli下ESlint 配置说明
Sep 03 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
Jul 26 #Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
Jul 26 #Javascript
Angular中自定义Debounce Click指令防止重复点击
Jul 26 #Javascript
JavaScript利用fetch实现异步请求的方法实例
Jul 26 #Javascript
深入探究angular2 UI组件之primeNG用法
Jul 26 #Javascript
WdatePicker.js时间日期插件的使用方法
Jul 26 #Javascript
关于Stream和Buffer的相互转换详解
Jul 26 #Javascript
You might like
两种php调用Java对象的方法
2006/10/09 PHP
php中require和require_once的区别说明
2014/02/27 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
2014元旦晚会策划方案
2014/02/19 职场文书
吨的认识教学反思
2014/04/27 职场文书
2015年端午节活动方案
2015/05/05 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript
详解Redis基本命令与使用场景
2021/06/01 Redis