Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- mysqldump: Got error: 1045
- svn 충돌 해결 resolve
- 비밀번호검증정규식
- 구글 OTP 인증
- 파라미터 & 오류
- 세로 중앙 정렬
- libxrender1
- svn 충돌 해결 resolved
- wkhtmltopdf 실행 오류
- 비밀번호정규식
- 부트스트랩4 세로 중앙 정렬
- html pdf 변환
- JQuery checkbox 컨트롤
- javascript
- modsecurity 설치
- PHP 구글 OTP 인증
- 자바스크립트비밀번호검증
- 우분투 mysql 비밀번호 없이 로그인 될때
- bootstrap modal
- bootstrap
- php 특정 문자열 취환
- mysql root 비밀번호 변경
- (using password: YES)" when trying to connect
- usb efi 시스템 파티션 삭제
- PHP 구글 OTP 연동
- magic bytes
- PHP 정규식 예제
- group_concat 구분자
- apache mod rewrite
- 아파치 웹 서버의 정보 숨기기
Archives
- Today
- Total
투덜이 개발자
JS - 파일API : FileReader() 객체 본문
반응형
JS - 파일API : FileReader() 객체
FileReader() 객체는 비동기적으로 파일의 내용을 읽어들이는 데 사용됩니다. 형식은 다음과 같습니다.
함께 사용할 수 있는 이벤트 핸들러와 메소드는 다음 표와 같습니다.
다음은 좀 더 복잡하게 구성해 보겠습니다. 파일을 선택하고, 전송을 클릭하면 파일 내용이 <textarea> 에 출력되는 예제입니다. 여기서 charset 을 생략하였기 때문에 기본값 UTF-8 로 설정됩니다.
이렇게 취득된 문자열로 이미지를 브라우저로 바로 출력시키면 사용자는 해당 이미지를 동적으로 확인할 수 있습니다.
다음은 복잡하게 구성해 보겠습니다.
var reader = new FileReader();
속 성설 명errorreadyStateresult
읽기 도중에 에러가 발생한 경우
|
파일의 상태를 숫자로 표현
|
파일의 내용을 반환 |
함께 사용할 수 있는 이벤트 핸들러와 메소드는 다음 표와 같습니다.
이벤트설 명onloadonerroronabortonloadstartonloadendonprogress
읽기 동작이 성공적으로 완료되었을 때 발생 |
읽기 동작에 에러가 생길 때마다 발생 |
읽기 동작이 중단될 때마다 발생 |
읽기 동작이 실행될 때마다 발생 |
읽기 동작이 끝났을 때마다 발생 (읽기 성공이나 실패 여부와 상관없이 발생) |
컨텐트를 읽는 동안 호출 |
메소드설 명.abort().readAsDataURL().readAsText()
읽기 요청을 중단시킴. (readyState 는 DONE이 됨) |
바이너리 파일을 Base64 Encode 문자열로 반환 Ex.) data:image/jpeg; base64, GDYG…. |
텍스트 파일을 읽어 들임.
|
.readAsText()
이 메소드는 텍스트 파일의 내용을 읽어 들일 때 사용됩니다. 이벤트는 onload 가 사용되었습니다.<input type='file' onchange='Reader(event)'>
<script>
var Reader = function(event) {
var data = event.target;
var reader = new FileReader();
reader.onload = function(){
console.log(reader.result);
};
reader.readAsText(data.files[0]);
};
</script>
다음은 좀 더 복잡하게 구성해 보겠습니다. 파일을 선택하고, 전송을 클릭하면 파일 내용이 <textarea> 에 출력되는 예제입니다. 여기서 charset 을 생략하였기 때문에 기본값 UTF-8 로 설정됩니다.
<input type="file" id="userfile" name="usefile" value="">
<input type="button" id="submit" value="전송">
<textarea cols="50" rows="10"></textarea>
<script>
var btn = document.getElementById("submit");
btn.addEventListener("click", function(){
var items = '';
var reader = new FileReader();
var data = document.getElementById("userfile").files[0];
// 읽기 동작이 완료되었을 때...
reader.addEventListener('load', function(){
document.getElementsByTagName("textarea")[0].value = reader.result;
});
// 파일 읽기에 오류가 있으면..
reader.addEventListener('error', function(){
console.log(reader.error.message);
});
// 파일을 문자열로 읽어 들임
reader.readAsText(data);
});
</script>
.readAsDataURL()
readAsDataURL() 는 바이너리 파일을 읽어 들일 때 사용됩니다. 바이너리 파일을 읽어 들이기 위해 readAsText 대신 readAsDataURL 를 사용하면 예제와 같이 base64 로 이루어진 데이터를 반환받을 수 있습니다.<img src="data:image/jpeg;base64, RFT188094Hv....">
이렇게 취득된 문자열로 이미지를 브라우저로 바로 출력시키면 사용자는 해당 이미지를 동적으로 확인할 수 있습니다.
<input type='file' accept='image/*' onchange='Reader(event)'><br>
<img id='output'>
<script>
var Reader = function(event) {
var data = event.target;
var reader = new FileReader();
reader.onload = function(){
var dataURL = reader.result;
var output = document.getElementById('output');
output.src = dataURL;
};
reader.readAsDataURL(data.files[0]);
};
</script>
다음은 복잡하게 구성해 보겠습니다.
<input type="file" id="userfile" name="usefile" value="">
<input type="button" id="submit" value="전송">
<img src="">
<script>
var btn = document.getElementById("submit");
btn.addEventListener("click", function(){
var items = '';
var reader = new FileReader();
var data = document.getElementById("userfile").files[0];
// 읽기 동작이 완료되었을 때...
reader.addEventListener('load', function(){
document.getElementsByTagName("img")[0].src = reader.result;
});
// 파일 읽기에 오류가 있으면..
reader.addEventListener('error', function(){
console.log(reader.error.message);
});
// 파일을 base64 로 읽어 들임
reader.readAsDataURL(data);
});
</script>
error 속성
파일을 읽기 도중 오류가 발생하면 각 해당하는 상수를 이용해 오류를 제어할 수 있습니다.reader.onerror = function(event){
switch(event.target.error.code){
case error.NOT_FOUND_ERR:
alert("파일을 찾을 수 없습니다.");
break;
case error.SECURITY_ERR:
alert("파일에 변경이 있습니다.");
break;
case error.ABORT_ERR:
alert("파일 읽기가 중지되었습니다.");
break;
case error.NOT_READABLE_ERR:
alert("파일 읽을 권한이 없습니다.");
break;
case error.ENCODING_ERR:
alert("파일 허용 용량을 초과하였습니다.");
break;
}
};
readyState 속성
readyState 속성에 대한 예제입니다.<input type='file' onchange='openFile(event)'>
<script>
var stateNames = {};
stateNames[FileReader.EMPTY] = 'EMPTY';
stateNames[FileReader.LOADING] = 'LOADING';
stateNames[FileReader.DONE] = 'DONE';
var openFile = function(event) {
var input = event.target;
var reader = new FileReader();
reader.onload = function(){
console.log('After load: ' + stateNames[reader.readyState]);
};
console.log('Before read: ' + stateNames[reader.readyState]);
reader.readAsDataURL(input.files[0]);
console.log('After read: ' + stateNames[reader.readyState]);
/*
결과:
Before read: EMPTY
After read: LOADING
After load: DONE
*/
};
</script>
출처: https://www.javascripture.com/FileReader
https://www.habonyphp.com/2019/03/js-api-filereader.html
반응형
'Program Language > JavaScript & Jquery' 카테고리의 다른 글
[JavaScript] IE 접속시 Edge 로 접속 알림창 띄우기 (0) | 2022.07.05 |
---|---|
[JavaScript] JavaScript Serialize function (0) | 2022.06.27 |
[jquery] hide, show 함수, visibility 속성 (0) | 2022.05.13 |
jquery datepicker 기간 설정 (0) | 2022.03.07 |
[jQuery] 체크박스 전체 선택, 전체 해제, 모든 항목 체크 시 전체 선택 체크박스 선택되게 하기 (0) | 2022.02.14 |