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 相关文章推荐
用htc组件制作windows选项卡
Jan 13 Javascript
JQuery datepicker 使用方法
May 20 Javascript
js中call与apply的用法小结
Dec 28 Javascript
微信小程序 参数传递详解
Oct 24 Javascript
vue移动端路由切换实例分析
May 14 Javascript
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
Nov 14 Javascript
vue-router传参用法详解
Jan 19 Javascript
微信小程序下拉框搜索功能的实现方法
Jul 31 Javascript
vue 实现Web端的定位功能 获取经纬度
Aug 08 Javascript
JavaScript实现密码强度实时验证
Mar 18 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
Apr 08 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
js闭包的用途详解
2014/11/09 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
vue v-model动态生成详解
2018/06/30 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
用python实现批量重命名文件的代码
2012/05/25 Python
python动态监控日志内容的示例
2014/02/16 Python
python中偏函数partial用法实例分析
2015/07/08 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
python并发编程之线程实例解析
2017/12/27 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
python保留小数位的三种实现方法
2020/01/07 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
日本航空官方网站:JAL
2019/06/19 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
小学教学工作总结2015
2015/05/13 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
同事去世追悼词
2015/06/23 职场文书