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 相关文章推荐
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
Oct 25 Javascript
JS画线(实例代码)
Nov 20 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
Mar 19 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Jan 21 Javascript
javascript属性访问表达式用法分析
Apr 25 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
JSON与XML的区别对比及案例应用
Nov 11 Javascript
轻松理解JavaScript闭包
Mar 14 Javascript
JavaScript模块详解
Dec 18 Javascript
vue双向绑定及观察者模式详解
Mar 19 Javascript
js/jQuery实现全选效果
Jun 17 jQuery
vue使用自定义指令实现拖拽
Jan 29 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
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
Python global全局变量函数详解
2018/09/18 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
客服实习的个人自我鉴定
2013/10/20 职场文书
成人教育自我鉴定
2013/11/01 职场文书
小学毕业家长寄语
2014/01/19 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
优秀护士事迹材料
2014/12/25 职场文书
聘任合同书
2015/09/21 职场文书
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技