本文实例教大家如何编写一个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);
}
最终效果如下:
点击打开源码 https://github.com/317482454/vue_upload
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue上传图片组件
# vue上传图片
# vue上传组件
# vue+element实现图片上传及裁剪功能
# vue.js 实现图片本地预览 裁剪 压缩 上传功能
# cropper js基于vue的图片裁剪上传功能的实现代码
# vue实现移动端图片裁剪上传功能
# Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
# vue中使用elementUI组件手动上传图片功能
# vue+elementUi图片上传组件使用详解
# 基于vue-upload-component封装一个图片上传组件的示例
# vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
# require.js+vue开发微信上传图片组件
# vue 图片裁剪上传组件的实现
# 上传图片
# 拖到
# 大家多多
# 以供
# 清空
# 有一个
# 判断是否
# 拖拽
# 上传
# js
# files
# el
# click
# getElementById
# document
# target
# length
# br
# fileAdd
# style
相关文章:
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
如何在新浪SAE免费搭建个人博客?
如何快速搭建支持数据库操作的智能建站平台?
如何在阿里云部署织梦网站?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
如何制作一个表白网站视频,关于勇敢表白的小标题?
建站主机数据库如何配置才能提升网站性能?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
建站之星如何助力企业快速打造五合一网站?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
广州营销型建站服务商推荐:技术优势与SEO优化解析
实惠建站价格推荐:2025年高性价比自助建站套餐解析
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
,在苏州找工作,上哪个网站比较好?
如何在阿里云服务器自主搭建网站?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何通过万网虚拟主机快速搭建网站?
临沂网站制作公司有哪些,临沂第四中学官网?
建站之星下载版如何获取与安装?
湖北网站制作公司有哪些,湖北清能集团官网?
,网页ppt怎么弄成自己的ppt?
公司网站设计制作厂家,怎么创建自己的一个网站?
文字头像制作网站推荐软件,醒图能自动配文字吗?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何高效完成独享虚拟主机建站?
建站之星如何快速更换网站模板?
如何用PHP工具快速搭建高效网站?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何在云虚拟主机上快速搭建个人网站?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
如何自定义建站之星网站的导航菜单样式?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
建站之星免费模板:自助建站系统与智能响应式一键生成
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
网站制作话术技巧,网站推广做的好怎么话术?
建站之星价格显示格式升级,你的预算足够吗?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何用已有域名快速搭建网站?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
如何在IIS中新建站点并配置端口与物理路径?
清除minerd进程的简单方法
定制建站价位费用解析与套餐推荐全攻略
网站制作公司,橙子建站是合法的吗?
如何在万网ECS上快速搭建专属网站?
如何快速查询域名建站关键信息?
*请认真填写需求信息,我们会在24小时内与您取得联系。