js利用FileReader實現(xiàn)圖片轉(zhuǎn)base64格式并上傳預(yù)覽頭像
修改用戶頭像,一般都會需要把圖片轉(zhuǎn)成base64格式,所以我們需要學(xué)會怎么利用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設(shè)置ref拿到Dom
- 2.給input設(shè)置change改變事件
- 2.1設(shè)置一個變量接收轉(zhuǎn)換的數(shù)據(jù)
- 2.2拿到事件目標(biāo),里面有個方法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進(jìn)制
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) {
// 點擊了取消了,就恢復(fù)默認(rèn)圖片
this.Avatar = ''
} else {
// FileReader 瀏覽器提供的方法
const reader = new FileReader()
// reader里面有個方法readAsDataURL 可以將圖片轉(zhuǎn)base64進(jìn)制
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è)務(wù)狀態(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>到此這篇關(guān)于js利用FileReader實現(xiàn)圖片轉(zhuǎn)base64格式并上傳預(yù)覽頭像的文章就介紹到這了,更多相關(guān)js FileReader 圖片轉(zhuǎn)base64內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用JS組件實現(xiàn)帶ToolTip驗證框的實例代碼
這篇文章主要介紹了使用JS組件實現(xiàn)帶ToolTip驗證框的實例代碼,需要的朋友可以參考下2017-08-08
JavaScript實現(xiàn)向setTimeout執(zhí)行代碼傳遞參數(shù)的方法
這篇文章主要介紹了JavaScript實現(xiàn)向setTimeout執(zhí)行代碼傳遞參數(shù)的方法,分析了向setTimeout傳遞參數(shù)的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04
url傳遞的參數(shù)值中包含&時,url自動截斷問題的解決方法
下面小編就為大家?guī)硪黄猽rl傳遞的參數(shù)值中包含&時,url自動截斷問題的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
Layui數(shù)據(jù)表格跳轉(zhuǎn)到指定頁的實現(xiàn)方法
今天小編就為大家分享一篇Layui數(shù)據(jù)表格跳轉(zhuǎn)到指定頁的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
javascript作用域鏈與執(zhí)行環(huán)境詳解
這篇文章主要為大家詳細(xì)介紹了javascript作用域鏈與執(zhí)行環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
JavaScript調(diào)用客戶端的可執(zhí)行文件(示例代碼)
這篇文章主要是對JavaScript調(diào)用客戶端的可執(zhí)行文件(示例代碼)進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11

