Frontend/Javascript

[Javascript] 파일 업로드와 프리뷰 구현하기

돌잡이개발자 2022. 2. 25. 14:41

자바스크립트로 이미지 파일을 업로드하고 프리뷰를 보는 방법에 대해 알아보자.

 

input 태그 사용하여 이미지 파일 업로드 하기

<input
  id="file-upload"
  name="file-upload"
  type="file"
  accept="image/*"
  onChange={onFileChange}
/>

 

input 이벤트에 파일을 담아온다. 

const [filePreview, setFilePreview] = useState("");

const onFileChange = (e) => {
    const {
      target: { files },
    } = e;
    
    const imgFile = files[0];
    const url = URL.createObjectURL(imgFile);
    setFilePreview(url);
};
  • 이미지 하나만 올리기 때문에 첫번째 이미지를 선택한다.
  • URL.createObjectURL() 이미지 blob 객체를 url로 바꿔주는 역할을 한다. 이를 setFilePreview에 넣는다.

 

프리뷰 보여주기

{filePreview ? (
  <>
    <FileBg>
      <BiCamera
        style={{ color: "#fff", fontSize: "30px", width: "100%" }}
      />
      <FileText>눌러서 파일 변경</FileText>
    </FileBg>
    <Img src={filePreview} alt="uploadImage" />
  </>
) : (
  <SpanWrapper>
    <BiPlus style={{ fontSize: "40px", color: "#868e96" }} />
    <Span>눌러서 파일 등록</Span>
  </SpanWrapper>
)}
  • setFilePreview에 이미지 링크가 있는지, 없는지에 따라 이미지 프리뷰나 기본 업로드 화면을 보여줄 수 있다. 
반응형