https://loy124.tistory.com/204 (s3 서버 구축하기)
https://loy124.tistory.com/205?category=768865 (s3 CloudFront와 연동하기)
기초 셋팅
https://loy124.tistory.com/206
백엔드 구성편
https://loy124.tistory.com/207
프론트 구성편
https://loy124.tistory.com/208
vue.js script 방식을 활용해서 간단하게 file upload를 테스트해보았다.
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<link rel="stylesheet" href="./css/layout.css">
<!-- import CSS -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- import JavaScript -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
<div id="app">
<div class="container">
<div class="large-12 medium-12 small-12 cell">
<label>File
<input v-model="title">
<input type="file" id="files" ref="files" v-on:change="handleFileUpload()" multiple />
</label>
<button v-on:click="submitFile()">Submit</button>
</div>
<div>
이미지 리스트 받아오기
<div v-for="(galleryData, index) in galleryDatas" :key="index">
{{galleryData.title}}
<img style="width: 120px;" :src="galleryData.file_path">
</div>
</div>
</div>
</div>
<script>
const app = new Vue({
el: "#app",
data() {
return {
title: "",
files: [],
galleryDatas: []
}
},
mounted() {
axios.get('http://localhost:8081/api/gallery/getImageList')
.then(res => {
console.log(res.data);
this.galleryDatas = res.data
})
.catch(error => console.log(error));
},
methods: {
submitFile() {
for (i = 0; i < this.files.length; i++) {
let formData = new FormData();
formData.append('title', this.title);
formData.append('files', this.files[i]);
axios.post('http://localhost:8081/api/gallery/upload',
formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}
).then(function() {
console.log('SUCCESS!!');
})
.catch(function() {
console.log('FAILURE!!');
});
}
},
handleFileUpload() {
this.files = this.$refs.files.files;
console.log(this.files);
}
}
});
</script>
</body>
</html>
파일 업로드 버튼 클릭
선택이 된것을 확인할수 있다. submit 버튼 제출시
console.log창에 success가 잘 나오고
이미지 또한 잘 출력이 된것을 확인할수 있다.
여기까지 Spring boot - mysql - mybatis - s3 <-> vue.js를 활용한 예제였다.
'Vue > vue 활용하기' 카테고리의 다른 글
vue Toast UI Editor 적용기 (1) | 2022.06.17 |
---|---|
vue image preview(vue 이미지 미리보기) 컴포넌트 만들기 (0) | 2020.04.12 |