250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Python
- 오블완
- CSS
- React
- threejs
- jquery
- 배포
- 티스토리챌린지
- Setting
- Laravel
- Kaikas
- NextJS
- nft
- miniconda
- polygon
- 공연티켓
- 회고
- PM2
- nodejs
- chatGPT
- Remix
- 라라벨
- node
- exceljs
- nginx
- pagination
- metamask
- 블록체인
- Ai
- netfunnel
Archives
- Today
- Total
박주니 개발 정리
input type file 대신 다른 버튼으로 대체하고 reader 적용하는 방법 본문
728x90
반응형
jquery를 활용하니 script에다가 jquery를 추가해주시길 바랍니다.
<script
src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
crossorigin="anonymous">
</script>
1. 프론트에 input type file, button, img form을 만듭니다.
@extends('dashboard.authBase')
@section('content')
<div>
<input type="file" id="imageInput" nmae="file" onchange="uploadFile(this)" enctype="multipart/form-data" style="display:none">
<button id="img-upload-btn">reader</button>
<img id="preview-image" src="#">
</div>
@endsection
@section('javascript')
<script>
</script>
@endsection
- 참고 사항▶
- file을 넣을 때는 꼭 enctype="multipart/form-data"를 추가해야 정상적으로 image를 가져올 수 있습니다.
- input file에 style="display:none"을 한 이유는 button에다가 input file 기능을 대체하기 위함입니다.
2. button 클릭시 input file이 실행이 되면서 onchange event가 실행될 수 있게 구현합니다.
@section('javascript')
<script>
$(document).on("click", "#img-upload-btn", function(e){
e.preventDefault();
$('#imageInput').click();
})
function uploadFile(input){
}
</script>
@endsection
- 참고 사항▶
- $('#imageInput').click()을 하게 되면 onchange="uploadFile(this)"가 실행이 되니깐 function uploadFile(input)에다가 FileReader 기능을 넣으면 됩니다.
3. FileReader가 onload될 때 img src에다가 현재 이미지를 올린 경로로 대체하고 그 url을 불러옵니다.
@section('javascript')
<script>
$(document).on("click", "#img-upload-btn", function(e){
e.preventDefault();
$('#imageInput').click();
})
function uploadFile(input){
var reader = new FileReader();
reader.onload = function(e){
$('#preview-image')
.attr('src', e.target.result)
};
reader.readAsDataURL(input.files[0]);
}
</script>
@endsection
- 참고 사항▶
- uploadFile class 안에 console.log(input.value)을 하게 되면 현재 넣은 이미지 정보를 확인할 수 있습니다. 그 경로를 src에다가 대체시키면 그 이미지 자리에는 file에 올린 이미지가 보이게 됩니다.
응용을 하게 되면 jquery에다가 css 추가해서 각 id마다 적용하면 버튼 화면 클릭시 이미지 화면으로도 대체하는 것을 볼 수 있을 것입니다.
728x90
반응형
Comments