[JavaScript] 이미지 파일 업로드 하기 [JS기초 함수] - 띵코딩 on Code
by 띵코딩2023. 9. 20.
FileReader 객체란?
FileReader는 웹페이지 상에 파일을 업로드하여 파일의 내용을 보여주는데 도움을 주는 객체이다. 세부적으로는 웹 어플리케이션이 비동기적으로 데이터를 읽기 위하여 파일을 가리키는 File 혹은 Blob 객체를 이용해 파일의 내용을 읽고 사용자의 컴퓨터에 저장하는 것을 가능하게 해준다. 여기서 File객체는 input 태그를 이용하여 유저가 선택한 파일들의 결과로 반환된 FileList 객체 정보를 제공한다.
FileReader 생성자 구문
var reader = new FileReader(); // reader는 FileReader 속성, 이벤트, 메서드를 사용할 수 있다.
FileReader 속성
FileReader.error
파일을 읽는 도중에 발생한 에러를 나타낸다.
const reader = new FileReader();
console.log(reader.error); // 현재는 에러가 없기에 null
FileReader.readyState
FileReader의 상태를 나타내는 숫자 - EMPTY : 0 : 아직 데이터가 로드 되지 않았음. - LOADING : 1 : 데이터가 로딩 중. - DONE : 2 : 모든 읽기 요청이 완료됨.
이 메서드는 컨텐츠를 특정 Blob이나 File에서 읽어 오는 역할을 한다. 읽기 작업이 끝나는 경우에 readyState의 상태가 DONE이 되며 loaded이벤트가 트리거 된다. base64 인코딩 된 스트링 데이터가 result 속성에 담겨 진다. 이미지 데이터를 전달하기위해 꼭 필요한 메서드이다.
const input = document.querySelector(".input");
input.addEventListener("change", (e) => {
const reader = new FileReader();
reader.readAsDataURL(e.target.files[0]); //File객체의 리스트로부터 데이터를 받는다.
reader.onload = (file) => {
console.log(file.target.result);
};
});
FileReader.readAsText()
이 메서드는 컨텐츠를 특정 Blob이나 File에서 읽어 오는 역할을 한다. 읽기 작업이 끝나는 경우에 readyState의 상태가 DONE이 되며 loaded이벤트가 트리거 된다. result프로퍼티는 파일의 내용을 텍스트 문자열로 가진다.
function printFile(file) {
const reader = new FileReader();
reader.onload = (evt) => {
console.log(evt.target.result);
};
reader.readAsText(file);
}