作为一名代码届的前端码农,上传头像这样的功能肯定是见怪不怪了,
这两天有点儿空余时间,整理了一下上传头像的功能实现方法。

首先考虑上传的相关需求要求

(1) 格式要求(jpg | png | jpeg | gif )
(2) 大小要求(比如不超过300kb)
(3) 尺寸大小限制(1:1,4:9,9:16)
(4) 是否可以裁剪
(5) 单张还是多张(单张一般用在用户头像)

具体例子来解决问题

1、html部分

<template><div class="hello"><div class="user-header"><input type="file" name="image" accept="image/*" @change='onchangeImgFun'class="header-upload-btn user-header-com"><img  alt="" :src='imgStr' class="user-header-img user-header-com"><p class="tip">图片限制50kb <span class="error">{{errorStr}}</span></p></div></div>
</template>
<!-- input 的accept属性可以用来解决格式筛选问题 -->

2、css部分

<style scoped>
.user-header{position: relative;display: inline-block;
}
.user-header-com{width: 144px;height: 144px;display: inline-block;
}
.header-upload-btn{position: absolute;left: 0;top: 0;opacity: 0;/* 通过定位把input放在img标签上面,通过不透明度隐藏 */
}
.tip{font-size: 14px;color: #666;
}
/* error是用于错误提示 */
.error{font-size: 12px;color: tomato;margin-left: 10px;
}
</style>

3、js部分

<script>
export default {name: 'HelloWorld',data () {return {imgStr: require('../assets/upload.png'),errorStr: ''}},methods: {onchangeImgFun (e) {var file = e.target.files[0]console.log(file)// 获取图片的大小,做大小限制有用let imgSize = file.sizeconsole.log(imgSize)var _this = this // this指向问题,所以在外面先定义// 比如上传头像限制5M大小,这里获取的大小单位是bif (imgSize <= 50 * 1024) {// 合格_this.errorStr = ''console.log('大小合适')// 开始渲染选择的图片// 本地路径方法 1// this.imgStr = window.URL.createObjectURL(e.target.files[0])// console.log(window.URL.createObjectURL(e.target.files[0])) // 获取当前文件的信息// base64方法 2var reader = new FileReader()reader.readAsDataURL(file) // 读出 base64reader.onloadend = function () {// 图片的 base64 格式, 可以直接当成 img 的 src 属性值var dataURL = reader.resultconsole.log(dataURL)_this.imgStr = dataURL// 下面逻辑处理}} else {console.log('大小不合适')_this.errorStr = '图片大小超出范围'}}}}
</script>

用户选择图片之后的渲染方法有两种

  • 本地路径方法转化 window.URL.createObjectURL
  • FileReader转化为base64格式

到这里,最简单的上传头像问题就解决了,

(上传前)

(上传后)

下期更新怎么实现裁剪相关需求

vue项目中上传头像的简易方法(一)相关推荐

  1. vue项目中上传文件到阿里云oss方法

    上传背景介绍 在项目需求中,关于图片.视频.文件等上传文件,一般不是直接放置在自己的后台服务器上,一般都会购买云服务进行存储.譬如阿里云的oss对象存储. 那么,前端开发项目中,涉及到上传的功能时,我 ...

  2. vue项目中实现头像上传的功能型组件

    @vue项目中实现头像上传的功能型组件 功能需求 实现个人中心的头像上传功能: 1.用户未上传过头像,展示设定好的默认头像(区分男女) 2.支持格式png.jpg.jpeg 3.图片大小:小于等于2M ...

  3. vue项目刷新当前页面的三种方法

    本文介绍了vue项目刷新当前页面的三种方法,本文图文并茂给大家介绍的非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下. 想必大家在刨坑vue的时候也遇到过下面情形:比如在删除或者增加一条记录的时 ...

  4. vue ajax highcharts,在vue项目中引入highcharts图表的方法(详解)

    npm进行highchars的导入,导入完成后就可以进行highchars的可视化组件开发了 npm install highcharts --save 1.components目录下新建一个char ...

  5. vue项目引入CNZZ数据专家(方法汇总篇)

    vue项目引入CNZZ数据专家(方法汇总篇) 很多网站都有cnzz数据统计,用于分析网站页面受访情况. 今天就来备注一下开发经验: vue如何集成cnzz数据专家进行受访记录? 友盟+CNZZ官方文档 ...

  6. vue项目中-上传图片头像并裁剪成任意大小的实现

    vue项目中-上传图片头像并裁剪成任意大小的实现 先看效果图: 放大缩小-翻转-查看都有的哦! 直接上代码 <el-dialog title="图片剪裁" :visible. ...

  7. vue+elementui上传头像

    vue+elementui上传头像 vue页面中: <el-form :model="form"><el-form-item label="路径&quo ...

  8. 将本地vue项目上传到github上

    将本地vue项目上传到github上 首先,打开本地创建好的vue项目文件,右键点击Git bash Here,打开Git命令工具,输入git init 回车运行,生成.git文件. 运行git ad ...

  9. springboot+vue实现上传头像文件到阿里云对象存储oss

    在阿里云oss上创建一个bucket,获取四个信息: 编写工具类,提供对外调用四个信息的方法: //当项目一启动,就执行接口的方法,读取配置文件内容 @Component public class C ...

最新文章

  1. 自动红眼移除算法 附c++完整代码
  2. java中的异常及其处理
  3. Oracle DBLink的简单运用
  4. 判断两个数组内容是否相同
  5. 柿子不能和什么同吃?柿子相克食物大盘点
  6. html显示php值,HTML窗体加载显示通过PHP的十六进制值
  7. CDM CDP及传统备份技术对比
  8. 【训练题】分队 P1672
  9. sql经典题目(1)
  10. PTES Technical Guidelines
  11. html 设置整体字体,html font标签如何设置字体样式
  12. Android实现微信悬浮窗
  13. 《搞不定人,你如何带团队?》读书记录
  14. pytorch 中pad函数toch.nn.functional.pad()的使用
  15. 退休当月要干到月底吗_到退休年龄,是当月办理退休,还是提前一个月办理?...
  16. 戏说CAD开发 最简单角度看CAD软件
  17. HLS协议深入分析——时间线介绍(二)
  18. 【知识分享】HTML 与 CSS
  19. Python进行零售商品数据分析
  20. 6个大厂Offer,牛逼!

热门文章

  1. 软件设计师考试经验分享
  2. android的camera学习(2)——底层驱动分析
  3. switc中 break和return的区别
  4. tgp英雄联盟无法连接服务器未响应,lol点开始游戏没反应怎么办 完整解决办法一览...
  5. 国产 MCU AT32F403A 替换 STM32F103 点LED灯
  6. 外贸SOHO之路一星期接单30万美金
  7. 一个XMPP客户端需要实现的基本的XEP
  8. SAP 查询历史库存事务
  9. c3-31 case13简单算术计算器
  10. python中divmod_python中divmod是什么