html5 file drag and drop

HTML 2021. 5. 14. 17:46

html5의 파일 업로드시 drag and drop을 하는 기본 소스 입니다.

<div class="form-group">
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFile" onchange="readFiles(event)" multiple>
<label class="custom-file-label" for="customFile" id="fileDropZone">file select or drag and drop</label>
</div>
<div class="drag-files" style="display:none;">
</div>
</div>


<script>
function readFiles(event) {
$(".custom-file-label").html("");
$('.drag-files').html("");
var fileList = event.target.files;

for(var i=0; i < fileList.length; i++ ) {
var file = fileList[i];
if(i!=0){$(".custom-file-label").append(",");}
$(".custom-file-label").append(file.name);
}
}
function drop(event) {
$(".custom-file-label").html("");
$('.drag-files').html("");

event.stopPropagation();
event.preventDefault();

var fileList = event.dataTransfer.files;
addFileFromLastInput(fileList)

for(var i=0; i < fileList.length; i++ ) {
var file = fileList[i];
if(i!=0){$(".custom-file-label").append(",");}
$(".custom-file-label").append(file.name);
}
}
function addFileFromLastInput(file){
console.log(file);

var a = $('input#fileselect.addFile');
a[a.length-1].files = file;

try{
var new_input = '<input id="fileselect" type="file" name="fileselect" multiple class="addFile" />';
$('.drag-files').append(new_input);
}catch(err){

}
return 0;
}

var dropZone = document.getElementById("fileDropZone");
dropZone.addEventListener ( "drop", drop, false);
</script>

 

bootstrap4 에서 bs-custom-file-input.js 하는 경우 custom-file-input class를 사용하는 경우

drag, drop 시 custom-file-input 해당하는 input에 change가 발생 되고 readFiles이 실행 됩니다.

(drag 관련 스크립트는 사용할 필요 없습니다.)

 

bs-custom-file-input.js를 사용하지 않는 경우 위의 모든 소스를 다 사용 해야 합니다.

 

http://tutorials.jenkov.com/html5/file-api.html#selecting-multiple-files

 

HTML5 File API

The HTML5 file API is a JavaScript API which can be used to process files from the local file system directly in the browser. This tutorial explains how you use the HTML5 file API.

tutorials.jenkov.com

 

반응형

'HTML' 카테고리의 다른 글

html custom attribute 추가  (0) 2022.04.06
사이트, 페이지 설명 meta태그 추가  (0) 2021.06.29
페이스북 로그인 연동(javascript api)  (0) 2016.03.01
object 태그를 이용한 pdf보여주기  (0) 2015.09.21
fckeditor2.6 IE9문제  (0) 2015.03.09
Posted by 질주하는구
,