๐Ÿ“• Language/Vue

[vuejs] ์ด๋ฏธ์ง€ ์—…๋กœ๋“œํ•˜์—ฌ preview ์กฐํšŒ (FileReader ๋˜๋Š” URL.createObjectUrl ์‚ฌ์šฉ)

a n u e 2023. 2. 15. 17:00

 

๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. (css๋Š” ๋ชจ๋‘ ์ œ๊ฑฐํ•œ ์ƒํƒœ์ด๋ฏ€๋กœ ๋ชจ์–‘์ด ์˜ˆ์˜์ง€ ์•Š์Œ)

 

1. FileReader()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

 - ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. 

 - base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜

 

2. URL.createObjectUrl()์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

 - ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ์‹คํ–‰ ์†๋„๊ฐ€ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๋‹ค.

 - hash ํ˜•ํƒœ์˜ url์„ ๋ฐ˜ํ™˜


โ–  FileReader ์‚ฌ์šฉ

const uploadImg = (e) => {
  var input = e.target;
  if (input.files && input.files[0]) { //์‚ฌ์ง„ 1๊ฐœ์ธ ๊ฒฝ์šฐ (multiSelect ํ•˜๋ ค๋ฉด for๋ฌธ ๋Œ๋ ค์•ผํ•จ)
    var reader = new FileReader();
    reader.onload = (e) => {
      state.imgUrl = e.target.result;
    };
    reader.readAsDataURL(input.files[0]);
  }
};

 

โ–  URL.createObjectUrl ์‚ฌ์šฉ

const uploadImg = (e) => {
  let file = e.target.files;
  let url = URL.createObjectURL(file[0]);
  state.imgUrl = url;
};

 

๋‘ ๋ฐฉ๋ฒ• ๋‹ค, imgUrl ๋ณ€์ˆ˜์— ์ด๋ฏธ์ง€ url ์„ ์ถ”์ถœํ•˜์—ฌ ๋„ฃ์–ด์ฃผ๋ฏ€๋กœ <img> ํƒœ๊ทธ์—์„œ ๋ฟŒ๋ ค์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

<input @change="uploadImg" type="file" />
<img :src="imgUrl" />