js利用FileReader實現(xiàn)圖片轉(zhuǎn)base64格式并上傳預覽頭像
修改用戶頭像,一般都會需要把圖片轉(zhuǎn)成base64格式,所以我們需要學會怎么利用FileReader轉(zhuǎn)換
頁面布局:
<template> <el-card class="box-card"> <div slot="header" class="clearfix"> <span>更換頭像</span> </div> <div> <!-- 圖片,用來展示用戶選擇的頭像 --> <img :src="Avatar" alt="" style="width:350px;" v-if="Avatar"/> <img src="../../../assets/images/avatar.jpg" alt="" v-else /> <!-- 按鈕區(qū)域 --> <div class="btn-box"> <input type="file" style="display:none;" ref="refIpt" @change="onIptChange"> <el-button type="primary" icon="el-icon-plus" @click="chooseImg">選擇圖片</el-button> <el-button type="success" icon="el-icon-upload" :disabled="Avatar===''" @click="upLoadAvatar">上傳頭像</el-button> </div> </div> </el-card> </template>
思路分析:
- 1.點擊button按鈕觸發(fā)input的點擊事件,所以需要給input設置ref拿到Dom
- 2.給input設置change改變事件
- 2.1設置一個變量接收轉(zhuǎn)換的數(shù)據(jù)
- 2.2拿到事件目標,里面有個方法e.target.files是個偽數(shù)組.通過e.target.files.length判斷用戶是否選擇了圖片
- 2.3通過new FileReader拿到一個實例
- 2.4通過 實例名.readAsDataURL 將圖片轉(zhuǎn)成base64格式
- 2.5onload可以監(jiān)聽轉(zhuǎn)換完成后/給聲明變量賦值
- 3.點擊上傳按鈕發(fā)送axios/上傳成功重新請求用戶信息實現(xiàn)信息刷新
代碼:
<script> export default { name: 'UserAvatar', data () { return { // 聲明一個變量存儲轉(zhuǎn)好的base64進制 Avatar: '' } }, methods: { // 點擊button觸發(fā)input點擊事件 chooseImg () { this.$refs.refIpt.click() }, // input內(nèi)容改變事件 // e拿到事件對象 onIptChange (e) { // e.target.files是個偽數(shù)組/可以通過長度判斷用戶是否選擇了圖片 if (e.target.files.length === 0) { // 點擊了取消了,就恢復默認圖片 this.Avatar = '' } else { // FileReader 瀏覽器提供的方法 const reader = new FileReader() // reader里面有個方法readAsDataURL 可以將圖片轉(zhuǎn)base64進制 reader.readAsDataURL(e.target.files[0]) // onload可以監(jiān)聽轉(zhuǎn)換完成后 reader.onload = () => { // 給聲明變量賦值 this.Avatar = reader.result } } }, // 點擊上傳頭像 async upLoadAvatar () { // 發(fā)送axios 上傳 const { data: res } = await this.$http.patch('/my/update/avatar', { avatar: this.Avatar }) // 判斷業(yè)務狀態(tài)碼是否上傳成功給出提示 if (res.code !== 0) return this.$message.error(res.message) console.log(res) this.$message.success(res.message) // 上傳成功發(fā)送重新發(fā)送axios獲取最新用戶信息 this.$store.dispatch('initUserInfo') } } } </script>
到此這篇關于js利用FileReader實現(xiàn)圖片轉(zhuǎn)base64格式并上傳預覽頭像的文章就介紹到這了,更多相關js FileReader 圖片轉(zhuǎn)base64內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用JS組件實現(xiàn)帶ToolTip驗證框的實例代碼
這篇文章主要介紹了使用JS組件實現(xiàn)帶ToolTip驗證框的實例代碼,需要的朋友可以參考下2017-08-08JavaScript實現(xiàn)向setTimeout執(zhí)行代碼傳遞參數(shù)的方法
這篇文章主要介紹了JavaScript實現(xiàn)向setTimeout執(zhí)行代碼傳遞參數(shù)的方法,分析了向setTimeout傳遞參數(shù)的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04url傳遞的參數(shù)值中包含&時,url自動截斷問題的解決方法
下面小編就為大家?guī)硪黄猽rl傳遞的參數(shù)值中包含&時,url自動截斷問題的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08Layui數(shù)據(jù)表格跳轉(zhuǎn)到指定頁的實現(xiàn)方法
今天小編就為大家分享一篇Layui數(shù)據(jù)表格跳轉(zhuǎn)到指定頁的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09javascript作用域鏈與執(zhí)行環(huán)境詳解
這篇文章主要為大家詳細介紹了javascript作用域鏈與執(zhí)行環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03JavaScript調(diào)用客戶端的可執(zhí)行文件(示例代碼)
這篇文章主要是對JavaScript調(diào)用客戶端的可執(zhí)行文件(示例代碼)進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11