'이미지 파일 미리보기'에 해당되는 글 1건

반응형
웹프로그래밍을 하다보면 회원가입이나 프로필 등등에서 사진을 등록하고 바로보고싶을경우가 있다. 기본적으로 IE와 크롬에서 현재는 fakepath로 막아놓아서 파일경로를 읽어들일수없는데, 아래와 같은 방법을 사용하면 사진을 등록후 바로 미리보기 이미지화시킬수있다. 아래는 javascript코드이다.
function previewImage(targetObj, View_area) {
	var preview = document.getElementById(View_area); //div id
	var ua = window.navigator.userAgent;

	//ie일때(IE8 이하에서만 작동)
	if (ua.indexOf("MSIE") > -1) {
		targetObj.select();
		try {
			var src = document.selection.createRange().text; // get file full path(IE9, IE10에서 사용 불가)
			var ie_preview_error = document
					.getElementById("ie_preview_error_" + View_area);

			if (ie_preview_error) {
				preview.removeChild(ie_preview_error); //error가 있으면 delete
			}

			var img = document.getElementById(View_area); //이미지가 뿌려질 곳

			//이미지 로딩, sizingMethod는 div에 맞춰서 사이즈를 자동조절 하는 역할
			img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"
					+ src + "', sizingMethod='scale')";
		} catch (e) {
			if (!document.getElementById("ie_preview_error_" + View_area)) {
				var info = document.createElement("

"); info.id = "ie_preview_error_" + View_area; info.innerHTML = e.name; preview.insertBefore(info, null); } } //ie가 아닐때(크롬, 사파리, FF) } else { var files = targetObj.files; for (var i = 0; i < files.length; i++) { var file = files[i]; var imageType = /image.*/; //이미지 파일일경우만.. 뿌려준다. if (!file.type.match(imageType)) continue; var prevImg = document.getElementById("prev_" + View_area); //이전에 미리보기가 있다면 삭제 if (prevImg) { preview.removeChild(prevImg); } var img = document.createElement("img"); img.id = "prev_" + View_area; img.classList.add("obj"); img.file = file; img.style.width = '150px'; img.style.height = '200px'; preview.appendChild(img); if (window.FileReader) { // FireFox, Chrome, Opera 확인. var reader = new FileReader(); reader.onloadend = (function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img); reader.readAsDataURL(file); } else { // safari is not supported FileReader //alert('not supported FileReader'); if (!document.getElementById("sfr_preview_error_" + View_area)) { var info = document.createElement("p"); info.id = "sfr_preview_error_" + View_area; info.innerHTML = "not supported FileReader"; preview.insertBefore(info, null); } } } } }

HTML BODY영역에서 file에 등록하면 지정한 영역에 뿌려줄수있다.
onchange속성을 사용하여 파일이 등록되거나 변경될 시에 바로바로 적용가능하다.
onchange="previewImage(this,'영역아이디')


반응형

'IT관련 > JavaScript' 카테고리의 다른 글

Servlet alert 사용  (0) 2014.06.21
PrintWriter 사용시 인코딩 (한글깨짐)  (0) 2014.06.21
SELECTBOX OPTION SCRIPT  (0) 2014.06.13
블로그 이미지

Mr.비타민

,