티스토리 뷰
이미지 업로드 한 걸 HTML에 보여주는 방법 두가지
- FileReader() - 파일을 글자로 변환
- URL.createObjectURL() - 이미지의 가상 URL을 생성
* 이미지는 원래 0과 1로 이뤄진 binary 데이터임. binary 데이터를 다룰 때 BLOB라는 object에 담아서 다룸
ex) 파일 업로드 후 다음페이지로 이동 - 이동한 페이지에 업로드한 이미지 띄우기
<!-- App.vue -->
<template>
<Container :postData="postData" :step="step" :image="image" />
<div class="footer">
<ul class="footer-button-plus">
<!-- multiple: 다중선택 / accept="image/*": 이미지 선택을 기본으로 -->
<input @change="upload" accept="image/*" type="file" id="file" class="inputfile" />
<label for="file" class="input-plus">+</label>
</ul>
</div>
</template>
<script>
import Container from './components/Container.vue';
import postData from './data/postData';
export default {
name: 'App',
data() {
return {
...
step: 0,
image: '',
};
},
methods: {
upload(e) {
let file = e.target.files;
console.log(file[0]);
console.log(file[0].type); // 이미지 타입
let url = URL.createObjectURL(file[0]); // 가상의 이미지 URL 생성
console.log(url);
this.image = url;
this.step++; // 다음 페이지로 이동
},
},
...
};
</script>
<!-- Container.vue -->
<template>
<!-- 필터선택페이지 -->
<div v-if="step == 1">
<div class="upload-image" :style="{ backgroundImage: `url(${image})` }"></div>
</div>
</template>
<script>
import Post from './Post.vue';
export default {
name: 'Container-component',
props: {
postData: Array,
step: Number,
image: String,
},
components: { Post },
};
</script>
<style>
.upload-image {
width: 100%;
height: 450px;
background: cornflowerblue;
background-size: cover;
}
</style>'Library | Framework > Vue JS' 카테고리의 다른 글
| [Vue.js] 18. mitt (0) | 2023.08.07 |
|---|---|
| [Vue.js] 17. slot (0) | 2023.08.07 |
| [Vue.js] 15. Ajax (0) | 2023.08.06 |
| [Vue.js] 14-2. 라우터 hash mode, Navigation guards (0) | 2023.08.06 |
| [Vue.js] 14. vue-router, URL parameter (0) | 2023.08.05 |
댓글
