本篇文章给大家分享的是有关vue中怎么实现一个上传图片组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
“只有客户发展了,才有我们的生存与发展!”这是成都创新互联的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对做网站、成都网站设计、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。
1.首先得有一个[type=file]文件标签并且隐藏,changge事件来获取图片:
<input @change="fileChange($event)" type="file" id="upload_file" multiple />
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中怎么实现一个上传图片组件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。
当前文章:vue中怎么实现一个上传图片组件
分享链接:https://www.cdcxhl.com/article42/ihppec.html
成都网站建设公司_创新互联,为您提供网站设计、营销型网站建设、网站内链、网站改版、响应式网站、电子商务
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联