-
업로드할 사진 선택해서 창에 띄우는법.자바스크립트 2022. 1. 2. 18:38uploadImg(event) {let images = event.target.files;console.log(images);
let urls = [];for(let image of images) {//console.log(image.type)if(image.type.includes('image')) {urls.push(URL.createObjectURL(image));} else {alert('Image file is only uploadable!');return false;}}this.mainImage = urls[0];this.images = urls.splice(1, urls.length);this.step = 1;}위 메소드 첫 번째 줄처럼선택한 이미지파일들을 변수에 담아둘 수 있다.그 변수를 출력하면...이렇게 FileList라는 오브젝트 배열을 닮은 자료형으로 출력된다.선택된 이미지파일들을 업로드하기 전에 창에 띄우려면이미지 url을 만들어줘야하는데,방금 출력한 FileList를 임시 이미지 url로 만들 수 있는 두 가지 방법이 있다.1)FileReader()를 쓰는 방법은 이미지를 텍스트로 변환할 수 있다.2)URL.createObjectURL()로 가상 url을 만들어줄 수 있다.위 방법은 2번으로 진행했다.
FileList를 인덱싱해 URL.createObjectURL() 에 인자로 하나씩 집어넣으면...
앞에 'blob'라는게 붙은 url이 생성된다.
이건 Binary Large Object라는 뜻인데, 기본적으로 컴퓨터는 모든 파일을 2진법으로 저장하기에,
저런 형식이 붙는다고 생각하면된다.
그리고 생성된 url을
:style="{ backgroundImage: `url(${ url })` }"이렇게 넣어주면된다.또 사용자가 선택한 파일이 이미지 파일인지 체크해야한다.
태그에 저렇게 넣으면 파일 선택 팝업창에서 image파일들만 보여준다.
하지만 선택까지 막을 수는 없는데,
if(image.type.includes('image')) {
이렇게 변수에 할당된 이미지 파일에 .type을 해주면,
어떤 타입인지 알려준다.
이미지가 맞으면,
image/png나 image/jpg 이렇게 나오고
아니면 밑처럼 이상하게 나온다.
'자바스크립트' 카테고리의 다른 글
안써주면 은근히 계속 헷갈리는 문법 (0) 2022.02.06 destructuring 사용 시 주의점. (0) 2022.02.02 다른 js파일에서 코드 import해오기 (0) 2021.12.31 객체의 프로퍼티 지정 방법과 Symbol이란? (0) 2021.12.30 for in, for of 반복문이란? (0) 2021.12.30