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 相关文章推荐
让复选框只能选择一项的方法
Oct 08 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
JS实现的Select三级下拉菜单代码
Aug 20 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
Vue.js第三天学习笔记(计算属性computed)
Dec 01 Javascript
基于es6三点运算符的使用方法(实例讲解)
Oct 12 Javascript
Vue父子组件双向绑定传值的实现方法
Jul 31 Javascript
详解element-ui日期时间选择器的日期格式化问题
Apr 08 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
May 12 jQuery
微信小程序实现时间戳格式转换
Jul 20 Javascript
JS如何操作DOM基于表格动态展示数据
Oct 15 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 fsockopen伪造post与get方法的详解
2013/06/14 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
在漏洞利用Python代码真的很爽
2007/08/26 Python
python中的字典操作及字典函数
2018/01/03 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
python入门之基础语法学习笔记
2020/02/08 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
中间件分为哪几类
2016/09/18 面试题
个人自我鉴定怎么写
2013/10/28 职场文书
《忆江南》教学反思
2014/04/07 职场文书
服务整改报告
2014/11/06 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
MySQL索引失效的典型案例
2021/06/05 MySQL
解决 redis 无法远程连接
2022/05/15 Redis