JavaScript
[JavaScript] 첨부파일 등록
purecho
2021. 8. 30. 16:41
프론트단에서 첨부파일을 등록하고 리스트를 뿌려주는 코드입니다.
See the Pen by green526 (@green526) on CodePen.
▶ 코드
더보기
HTML
<div class="insert">
<form action="" method="POST" onsubmit="return false;">
<button class="add-button" onclick="addFile();">Add File</button>
<div class="file-list"></div>
</form>
</div>
CSS
.insert {
padding: 20px 30px;
display: block;
width: 600px;
margin: 5vh auto;
height: 90vh;
border: 1px solid #dbdbdb;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.insert .file-list {
height: 200px;
overflow: auto;
border: 1px solid #989898;
padding: 10px;
}
.insert .file-list .filebox p {
font-size: 14px;
margin-top: 10px;
display: inline-block;
}
.insert .file-list .filebox .delete i{
color: #ff5353;
margin-left: 5px;
}
Javascript
var fileNo = 0;
/* 첨부파일 추가 */
function addFile(){
var num = 5; // 최대 첨부파일 개수
var fileCnt = document.querySelectorAll('.name');
if (fileCnt.length < num) {
var fileId = 'file' + fileNo++;
var htmlData = '';
htmlData += '<div id="' + fileId + '" class="filebox">';
htmlData += ' <input type="file" name="file" onchange="changeFile(this);" hidden />';
htmlData += '</div>';
$('.file-list').append(htmlData);
$('#' + fileId + ' input').click();
} else {
alert("첨부할 수 있는 최대 파일 개수는 " + num + "개 입니다.");
}
}
/* 첨부파일 적재 */
function changeFile(obj){
var result = validation(obj);
if (result === false) {
deleteFile(obj);
} else {
let htmlData = '';
htmlData += '<p class="name">' + result + '</p>';
htmlData += '<a class="delete" onclick="deleteFile(this);"><i class="far fa-minus-square"></i></a>';
$(obj).parent().append(htmlData);
}
}
/* 첨부파일 검증 */
function validation(obj){
var fileName = obj.value.substring(obj.value.lastIndexOf('\\') + 1, obj.length); // 파일명
var fileExt = obj.value.substring(obj.value.lastIndexOf('.') + 1).toLowerCase(); // 확장자
if (fileName.length > 100) {
return false;
} else if (obj.files && obj.files[0].size > (100 * 1024 * 1024)) {
return false;
} else if (obj.value.lastIndexOf('.') == -1) {
return false;
} else if (fileExt == "exe" || fileExt == "com" || fileExt == "bat" || fileExt == "msi") {
return false;
} else if (fileExt != "jpg" && fileExt != "gif" && fileExt != "png" && fileExt != "jpeg" && fileExt != "bmp" && fileExt != "tif" && fileExt != "pdf") {
return false;
} else {
return fileName;
}
}
/* 첨부파일 삭제 */
function deleteFile(obj) {
obj.parentElement.remove();
}
참고
https://as-you-say.tistory.com/124
[HTML + JQuery] 파일 여러개 업로드를 위한 썸네일 파일첨부 만들기
See the Pen JQuery - File Upload Form by Hongjiseong (@hongjiseong) on CodePen.
as-you-say.tistory.com