[자바스크립트, HTML] 이미지 파일 미리보기
2023. 5. 6. 18:02ㆍJavascript
작성일 : 2020. 5. 24.
HTML 파일 객체가 있다.
<input type="file" multiple id="selectedfiles" style="opacity:0; position:relative; height:0;">
<div id="이미지 파일 목록"></div>
위의 컨트롤을 클릭, 파일 다이얼로그에서 선택한 파일 (특히 이미지)을 확인하는 방법이다.
첫째) 마크업 자체에서 제어할 수 없으므로 자바스크립트(이하 js로 명명)에서 해당 컨트롤에 대해 리스너를 등록한다.
$('#selectedfiles').change(selectedFileHandler);
/*
'change' 이벤트 발생 시 아래의 함수를 실행한다.
'change' 이벤트의 경우, 이전에 선택한 파일을 또 선택하면 발생하지 않는다. 이를 위해 'click' 이벤트 발생 시에 처리하려고 시도하였으나 의도한대로 작동하지 않기에 결국에는 'change' 로 돌아올 수 밖에 없었다.
*/
둘째) 리스너 함수를 구현한다. 가독성을 위해 별도로 구현한다.
selectedFileHandler = function(event) {
var files = event.target.files;// 파일 컨트롤에서 선택한 파일을 모두 가져오는 코드
var htmlStr = '';
for (var x=0; x < files.length; x++) {
/*
HTML5 부터 지원하는 객체;
<input type='file'> 컨트롤에서 선택한 파일 중 1개를 기준으로 처리할 수 있다.
따라서 multiple 인 경우 loop 구문에서 매회 새로운 인스턴스를 생성해야 함.
*/
var reader = new FileReader();
reader.onloadend = function(e) {
// [2] 아래의 readAsDataURL(파일) API 보다 더 중요한 처리 부분은 이 영역이다.
var quote_base64_img = '\'' + e.target.result + '\'';
htmlStr += '<a href="showImg(' + files[x] + ')">' + files[x].name + '</a><br>';
};
reader.readAsDataURL( files[x] ); // [1] 파일을 base64 포맷으로 읽어들인다.
}
}
'Javascript' 카테고리의 다른 글
[JQuery] selector 한꺼번에 지정하기 (0) | 2023.11.20 |
---|---|
JS 에서 소수점 반올림 처리하기 (0) | 2023.11.20 |
그리드 - Tabulator 엑셀 형식으로 다운로드하기 (0) | 2023.11.03 |
$(document).on('change', <select>, function() {...} (0) | 2023.09.24 |
주 번호로 해당 주의 시작일 ~ 종료일 범위 구하기 (0) | 2023.09.17 |