vue前端如何將任意文件轉(zhuǎn)為base64傳給后端
最近新項目,需要獲取文件的bae64編碼文本,但是原本是用的vantUI的uploader,對安卓手機的圖片上傳和文件上傳的數(shù)量有限制,一次只能上傳一張圖片(簡直麻了),于是舍棄了它,轉(zhuǎn)而圖片的繼續(xù)沿用之前用過的weixin-js-sdk這個微信的上傳圖片接口進行上傳圖片。
但是還有一個要求是需要處理pdf為base64,這個微信的只能處理圖片,所以花了很長的時間一直在查找資料,終于功夫不負有心人,做出來了獲取pdf的base64編碼的前端代碼。
同時,經(jīng)過測試,發(fā)現(xiàn)這個代碼不僅僅能用在pdf上,任意格式,比如pdf,xslx,doc文件都可以轉(zhuǎn)base64。
使用原生input
這個方式,使用的是H5原生的input進行上傳文件
// getBase64為獲取base64的方法
<input type="file" @change="getBase64">
具體實現(xiàn)
ps:發(fā)現(xiàn)一個問題:reader.onload 獲取不到內(nèi)部的值,查詢資料現(xiàn)對如下代碼進行修改
原版:
// 界面
<template>
<div>
<input type="file" @change="getBase64">
</div>
</template>
//js代碼
<script>
export default {
methods: {
getBase64(e) {
// 選擇的文件
let file = e.target.files[0];
console.log(file.name) // 文件名稱,有需求可處理
console.log(file.type) // 文件類型,有需求可處理
// 判斷文件是否讀取完畢,讀取完畢后執(zhí)行
if (window.FileReader) {
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e) {
let base64String = e.target.result;
// 此處可對該base64進行獲取賦值傳入后端
console.log("bese64編碼:", base64String);
}
}
}
}
}
</script>
修改后:
// 界面
<template>
<div>
<input type="file" @change="getBase64">
</div>
</template>
//js代碼
<script>
export default {
methods: {
getBase64(e) {
// 選擇的文件
let file = e.target.files[0];
console.log(file.name) // 文件名稱,有需求可處理
console.log(file.type) // 文件類型,有需求可處理
// 判斷文件是否讀取完畢,讀取完畢后執(zhí)行
if (window.FileReader) {
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = e => {
let base64String = e.target.result;
// 此處可對該base64進行獲取賦值傳入后端
console.log("bese64編碼:", base64String);
}
}
}
}
}
</script>
即:
reader.onload = function(e) {} ======>修改為:
reader.onload = e => {}主要原因是說function() {} 的方式不支持this,導致獲取不到值
截圖
以下為轉(zhuǎn)base64后的截圖樣例

總結(jié)
綜上,前端任意文件轉(zhuǎn)base64的代碼處理完成!
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue-router之路由鉤子函數(shù)應用小結(jié)
vue-router提供的導航鉤子主要用來攔截導航,讓它完成跳轉(zhuǎn)或取消,本文主要介紹了vue-router之路由鉤子函數(shù)應用小結(jié),具有一定的參考價值,感興趣的可以了解一下2024-01-01
vue開發(fā)table數(shù)據(jù)合并實現(xiàn)詳解
這篇文章主要為大家介紹了vue開發(fā)table數(shù)據(jù)合并實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07

