2019. 4. 7. 10:05
반응형
웹개발을 할 때 파일업로드를 할 일이 생기면 보통 input type='file' 이걸 쓴다.
파일을 추가하게 되면 오른쪽에 파일 이름이 나타난다.
사진의 경우 업로드를 하기전에 미리보기가 나오면 보기에 좋아보일 것 같았다.
사진을 추가하는 순간 업로드가 이루어져 서버에 업로드된 파일을 미리보기로 보여주는 방법도 있지만 사용자가 잘못된 파일을 선택하여 불필요한 업로드가 이루어질 가능성이 있기 때문에 서버를 거치지 않고 미리보기를 보여주는 것이 좋은 방법이라고 생각했다.
방법을 찾아보니 방법이 있었다.
참고로 예제에 vue.js와 jQuery를 약간 끼얹었다.
<script src="https://unpkg.com/vue@2.6.6/dist/vue.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='result'>
<input type='file' id='uploadFile' multiple='multiple'/><br/>
<table class="table">
<tr>
<th>미리보기</th>
<th>파일명</th>
<th>파일크기</th>
</tr>
<tr v-for="item in fileList">
<td><img v-bind:src="item.url" style='height:80px;width:80px;'/></td>
<td>{{item.name}}</td>
<td>{{item.size}}</td>
</tr>
</table>
</div>
<script>
var uploadApp = new Vue({
el: '#result',
data: {
fileList: []
}
})
$("#uploadFile").change(function(event){
console.log($(this)[0].files);
var files = $(this)[0].files;
uploadApp.fileList = [];
$.each(files, function(i, item){
var fileReader = new FileReader();
fileReader.onload = function(e){
var img = {
url: e.target.result,
name: item.name,
size: item.size
};
uploadApp.fileList.push(img);
}
fileReader.readAsDataURL(item);
});
});
</script>
미리보기 | 파일명 | 파일크기 |
---|---|---|
{{item.name}} | {{item.size}} |
반응형
'dev' 카테고리의 다른 글
[JavaScript] eval() : 문자열을 코드로 실행 (0) | 2019.05.13 |
---|---|
[JavaScript] select 박스 옮기기 예제 (0) | 2019.05.09 |
[Linux] shell script for문 사용 (0) | 2019.04.24 |
[Spring] Spring Boot 웹프로젝트 만들기 (0) | 2019.04.16 |
[Vue.js] 페이지 로딩전 구분문자( {{ name }} ) 숨기기 (0) | 2019.04.03 |
[Linux] 우분투 Nginx, php 설치 및 연동 링크 (0) | 2019.03.14 |
[Linux] 쉘 변수를 txt파일안에 내용으로 넣기 (0) | 2019.03.08 |
[Linux] crontab 로그 남길때 파일명 date로 표기 (1) | 2019.03.06 |