input과 fileReader로 file 업로드하고 읽기
마크업
우선 input 태그를 사용해 파일을 업로드 해보자.
1
2
3
4
5
6
<InputFile
ref={inputFile}
type="file"
onChange={(e) => handleImportChange(e)}
/>
<Button onClick={handleImportClick}>Import</Button>
InputFile
컴포넌트에는 display: none;
스타일을 적용하여 보이지 않도록 했다.
Button
을 클릭하면 InputFile
이 클릭되도록 하고, InputFile
에 onchange
이벤트를 등록한다.
file 전달
file의 트리 경로는 event.target.files[0]
이다.
fili은 객체로서 name, size, type 값을 가지고 있다.
type은 MEME 타입 값이다. Common MIME types
1
2
3
4
const handleImportChange = (e) => {
const file = e.target.files[0];
console.log("file", file);
};
FileReader()
FileReader
인스턴스를 생성한다.
onload
메서드로 result 값을 얻을 수 있다.
readAsText
메서드로 파일의 컨텐츠를 읽을 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
const handleImportChange = (e) => {
const file = e.target.files[0];
const reader = new FileReader();
reader.onload = function (e) {
console.log(e.target.result);
};
// 혹은
reader.onload = function () {
console.log(reader.result);
};
reader.readAsText(file);
};
json 파일 파싱
file의 타입이 json이라면 파싱해준다.
1
2
3
4
5
6
7
8
9
10
11
12
const handleImportChange = (e) => {
const file = e.target.files[0];
const reader = new FileReader();
reader.onload = function (e) {
console.log(e.target.result);
};
// 혹은
reader.onload = function () {
console.log(JSON.parse(reader.result));
};
reader.readAsText(file);
};
참고사이트
This post is licensed under CC BY 4.0 by the author.