반응형
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
- xcode
- androidstudio
- 맥
- unittest
- qunit
- vsCode
- Android
- Chrome
- node
- TensorFlow
- 네트워크
- MachineLearning
- webpack
- PYTHON
- react
- linux
- IOS
- 센토스
- localserver
- jest
- build
- VirtualBox
- ReactNative
- 오블완
- 개발
- 티스토리챌린지
- 리눅스
- MAC
- centos
Archives
- Today
- Total
로메오의 블로그
input file 이미지 미리보기 구현 본문
반응형
단일파일 미리보기
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
<h2>단일파일 처리</h2>
<img style="width: 500px;" id="previewImage" src="https://dummyimage.com/300x100/ffffff/000000.png&text=file upload">
<input style="display: block;" type="file" id="inputImage">
<script type="text/javascript">
/**
* 단일파일 업로드
*/
function readImage(input) {
if (input.files && input.files[0]) {
const reader = new FileReader();
reader.onload = (e) => {
const previewImage = document.getElementById('previewImage');
previewImage.src = e.target.result;
}
reader.readAsDataURL(input.files[0]);
}
}
// 이벤트 리스너
document.getElementById('inputImage').addEventListener('change', (e) => {
readImage(e.target);
})
</script>
</body>
</html>
멀티파일 미리보기
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<style type="text/css">
#multipleContainer {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
.image {
display: block;
width: 100%;
}
.image-label {
position: relative;
bottom: 22px;
left: 5px;
color: white;
text-shadow: 2px 2px 2px black;
}
</style>
</head>
<body>
<h2>멀티파일 처리</h2>
<input style="display: block;" type="file" id="inputMultipleImage" multiple>
<div id="multipleContainer"></div>
<script type="text/javascript">
/**
* 멀티파일 업로드
*/
function readMultipleImage(input) {
const multipleContainer = document.getElementById('multipleContainer')
if(input.files) {
console.log(input.files)
const fileArr = Array.from(input.files)
const $colDiv1 = document.createElement('div')
const $colDiv2 = document.createElement('div')
$colDiv1.classList.add('column')
$colDiv2.classList.add('column')
fileArr.forEach((file, index) => {
const reader = new FileReader()
const $imgDiv = document.createElement('div')
const $img = document.createElement('img')
$img.classList.add('image')
const $label = document.createElement('label')
$label.classList.add('image-label')
$label.textContent = file.name
$imgDiv.appendChild($img)
$imgDiv.appendChild($label)
reader.onload = e => {
$img.src = e.target.result
//$imgDiv.style.width = ($img.naturalWidth) * 0.2 + "px"
//$imgDiv.style.height = ($img.naturalHeight) * 0.2 + "px"
}
console.log(file.name)
if(index % 2 == 0) {
$colDiv1.appendChild($imgDiv)
} else {
$colDiv2.appendChild($imgDiv)
}
reader.readAsDataURL(file)
})
multipleContainer.appendChild($colDiv1)
multipleContainer.appendChild($colDiv2)
}
}
// 이벤트 리스너
document.getElementById('inputMultipleImage').addEventListener('change', (e) => {
readMultipleImage(e.target);
})
</script>
</body>
</html>
코드 참조: http://yoonbumtae.com/?p=3304
반응형
'Design > Markup' 카테고리의 다른 글
SVG 폰트 만들기 (0) | 2022.03.23 |
---|---|
Figma에서 Font Awesome 적용하기 (2) | 2022.03.17 |
[Gimp] 사각형 그리기 (0) | 2021.12.21 |
Apple 홈페이지 스크롤 애니메이션 [ScrollMagic ] (0) | 2021.10.28 |
[Adobe Photoshop] 한글판을 영문판으로 변경 (0) | 2020.01.22 |
Comments