JavaScript
[JavaScript] 첨부파일 다중파일 multiple 업로드 2
purecho
2021. 9. 2. 13:08
DataTransfer() 라는 함수를 쓰는 방법이다.
해당 예제는 계속 파일을 누적으로 추가를 할 수는 없고 파일 추가를 계속 하게 되면 기존 파일은 리셋되고 새로운 파일로 바뀌는 것이다.
코드는 어디서 건너건너 퍼온거고 내가 따로 덧붙여서 수정하진 않고 핵심 기능만 보여줌.
See the Pen by green526 (@green526) on CodePen.
코드
더보기
html
<div class="insert">
<form method="POST" onsubmit="return false;" enctype="multipart/form-data">
<input type="file" onchange="addFile(this);" multiple />
<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 selFile = document.querySelector("input[type=file]");
/* 첨부파일 추가 */
function addFile(obj){
var files = obj.files;
let htmlData = '';
for (var i = 0; i < files.length; i++) {
const file = files[i];
// 목록 추가
htmlData += '<div id="file' + i + '" class="filebox">';
htmlData += ' <p class="name">' + file.name + '</p>';
htmlData += ' <a class="delete" onclick="jsFunc.deleteFile(' + i + ');"><i class="far fa-minus-square"></i></a>';
htmlData += '</div>';
}
document.querySelector('.file-list').innerHTML = htmlData;
}
/* 첨부파일 삭제 */
function deleteFile(num) {
var dt = new DataTransfer()
var { files } = selFile;
for (var i = 0; i < files.length; i++) {
var file = files[i];
if (num !== i) dt.items.add(file);
selFile.files = dt.files;
}
document.querySelector("#file" + num).remove();
}