document.getElementById('input').addEventListener('change', (e) => {
const fileReader = new FileReader(); // File 을 읽기 위한 FileReader 객체 생성
fileReader.readAsDataURL(e.target.files[0]); // Blob -> base64 data로 변환
// 파일 읽기가 완료되었을 때 실행되는 이벤트 핸들러
fileReader.onload = (e) => {
let base64data = fileReader.result;
document.getElementById('previewImg').src = base64data;
}
}
)
실제 img File의 img를 읽기위해서는 js에서 제공하는 FileReader 라는 객체를 이용해야 하므로 FileReader 객체를 생성하고
readAsDataURL 이라는 메서드를 통해 img File의 data를 base64로 형태로 인코딩하여 읽는다.
해당 작업이 완료되면 fileReader.onload 가 실행되고 base64data 에 img data를 할당하고 base64data를 <img id="previewImg"> 의 src 속성에 넣어주면 된다.
여기서 말하는 Base64 인코딩은 아스키코드에서 사용되는 문자64개로 Data를 표현한다고 이해하면 된다. 어떻게 Byte(8bit) 단위의 img Binary data를 나타나는지 궁금했었는데 3개의 byte를 4개의 6bit로 쪼개서 표현한다고 한다.
'기본 > JavaScript' 카테고리의 다른 글
[HTML5] history API 브라우저 이동 (0) | 2024.11.18 |
---|---|
[Javascript] history.pushState() - 화면 전환 (1) | 2024.11.07 |
[Javascript] charCodeAt - 아스키 코드 활용 (0) | 2024.11.06 |
[Javascript] Base64를 Blob으로 변환하기 (0) | 2024.11.06 |
[Javascript] Blob, ArrayBuffer, TypedArray(Uint8Array) (1) | 2024.11.06 |