>웹 프론트엔드 >JS 튜토리얼 >Javascript 이미지 업로드 전 로컬 미리보기_javascript 기술의 예

Javascript 이미지 업로드 전 로컬 미리보기_javascript 기술의 예

WBOY
WBOY원래의
2016-05-16 16:44:161423검색

이미지 업로드 미리보기 기능은 주로 이미지를 업로드하기 전 효과를 미리보기 위해 사용됩니다. 현재 주류 방식으로는 js, jquery, flash 등이 주로 사용되지만, 우리는 일반적으로 js를 사용하여 이미지 업로드 미리보기 기능을 살펴보겠습니다. 한 가지 예에서.

원칙:

이미지 업로드 입력이 트리거되고 로컬 이미지가 선택되면 업로드할 이미지 객체의 URL(객체 URL)을 획득하고 src에 객체 URL을 할당하는 두 단계로 나뉩니다. 미리 작성된 img 태그의 속성입니다.

여기서는 Javascript의 File 객체, Blob 객체, window.URL.createObjectURL() 메소드를 이해해야 합니다.

파일 개체:

파일 개체는 파일에 대한 정보를 얻는 데 사용할 수 있으며 이 파일의 내용을 읽는 데에도 사용할 수 있습니다. 일반적으로 파일 개체는 사용자가 입력 요소에서 파일을 선택한 후 반환되는 FileList 개체입니다. 드래그 앤 드롭 작업으로 생성된 DataTransfer 개체에서 가져옵니다.
FileList 개체를 가져오는 방법을 살펴보겠습니다.

코드 복사 코드는 다음과 같습니다.





Blob 개체:

Blob 객체는 읽기 전용 원시 데이터를 포함하는 파일과 유사한 객체입니다. Blob 객체의 데이터는 반드시 JavaScript의 기본 형식일 필요는 없으며 Blob의 기능을 상속합니다. Blob 및 확장 지원 사용자 컴퓨터의 로컬 파일.
파일 인터페이스가 Blob을 상속하기 때문에 우리가 얻으려는 객체 URL은 실제로 Blob 객체에서 얻습니다. Blob 개체를 URL로 변환해 보겠습니다.

코드 복사 코드는 다음과 같습니다.


호환성:

위 방법은 크롬 브라우저에 적용됩니다
IE 브라우저라면 src 대신 입력값을 직접 이용하시면 됩니다
온라인에서 정보를 보시려면 File의 getAsDataURL() 메소드를 직접 이용하시면 됩니다. 이제 이 메소드는 모두 폐지되었습니다. 유사한 메소드로는 getAsText() 및 getAsBinary()가 있습니다.

코드 복사 코드는 다음과 같습니다.

function getFullPath(obj) { //Get 전체 그림 경로
if (obj) {
//ie
if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
obj.select();
return document.selection.createRange().text;
}
//firefox
else if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
if ( obj.files) {
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value; 🎜> }
}

이 코드는 클라이언트 이미지의 전체 경로를 가져오기 위한 것입니다

크기와 형식을 제한합니다

코드 복사 코드는 다음과 같습니다.

$("#loadFile").change(function () {
var strSrc = $("#loadFile").val();
img = new Image();
img.src = getFullPath(strSrc);
//업로드된 파일 형식이 올바른지 확인
var pos = strSrc.lastIndexOf(".")
var lastname = strSrc.substring(pos, strSrc.length)
if (lastname.toLowerCase() != ".jpg") {
Alert("업로드한 파일 형식은 "성"이며, 이미지는 JPG 형식이어야 합니다."); 🎜> return false;
}
//업로드된 파일의 가로 세로 비율을 확인합니다.

if (img.height / img.width > 1.5 || img.height / img.width < ; 1.25) {
warning("업로드한 이미지의 비율이 범위를 벗어났습니다. 가로세로 비율은 1.25~1.5 사이여야 합니다.")
return
}
//여부 확인 업로드된 파일이 크기를 초과했습니다.
if (img .fileSize / 1024 > 150) {
Alert("업로드한 파일 크기가 150K 제한을 초과했습니다!")
return false;


그 중 loadFile은 html 입력 파일의 ID입니다. 변경 이벤트, 즉 업로드할 파일을 선택한 후 그림 상자에 이미지를 표시하시겠습니까? 위 코드 끝에 다음 코드를 추가하세요.

$("#stuPic").attr ("src ", getFullPath(this));


jQuery를 사용하므로 jQuery로 작성된 코드의 예를 공유해 보겠습니다.