vue2에서 input 태그를 사용하여 파일을 업로드한 후 Base64 인코딩으로 변환하는 예제를 해보겠습니당
<input type="file" id="fileUpload" />
input 태그에 대한 자세한 옵션은 https://developer.mozilla.org/enUS/docs/Web/HTML/Reference/Elements/input 을 참고하세용
<script>
const inputDom = document.getElementById('fileUpload');
const uploadFiles = () => {
const selectedFile = inputDom.files;
};
inputDom.addEventListener('change', uploadFiles);
</script>

파일 데이터를 arrayBuffer로 읽어들인 후 Unit8Array 함수를 사용해 8bit 단위로 끊어읽을 수 있는 byte array로 변환하는 함수를 만들었습니다
array buffer에 대한 내용은 추후에 자세히 다뤄보도록 하겠습니당
<script>
fileToByteArray(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onloadend = (event) => {
if (event.target.readyState === FileReader.DONE) {
const arrayBuffer = event.target.result;
const byteArray = new Uint8Array(arrayBuffer);
resolve(byteArray);
}
};
reader.onerror = (error) => {
reject(error);
};
});
}
</script>
다시 2번 코드에 fileToByteArray 함수를 호출한 후 Base64로 인코딩하는 코드를 추가해줍니다
<script>
const inputDom = document.getElementById('fileUpload');
const uploadFiles = () => {
const selectedFile = inputDom.files;
this.fileToByteArray(selectedFile[0]).then(byteArray => {
var base64Encoded = byteArray.toBase64();
console.log('base64Encoded', base64Encoded);
});
};
inputDom.addEventListener('change', uploadFiles);
</script>
toBase64 함수는 Unit8Array 인스턴스를 Base64로 인코딩하는 함수입니다
'ABC'가 적힌 파일을 업로드하여 base64로 인코딩한 문자를 콘솔로 확인해보니 'QUJD'로 잘 출력되는걸 확인할 수 있습니다

'ABC'가 Base64 인코딩하여 'QUJD'로 변환되는 원리는 아래 글을 확인해보세용