๐ 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" />