js

[JavaScript] file drag and drop

natrue 2023. 12. 11. 16:19
728x90

๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HTML ์ž„์˜์˜ ์š”์†Œ์— ๋“œ๋ž˜๊ทธํ•œ ํŒŒ์ผ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

<div id="divId"></div>
dragenter   ๋ฐ•์Šค ์•ˆ์— Drag ๋“ค์–ด์™”์„ ๋•Œ 
dragover    ๋ฐ•์Šค ์•ˆ์— Drag๋ฅผ ํ•˜๊ณ  ์žˆ์„ ๋•Œ
dragleave   ๋ฐ•์Šค ๋ฐ–์œผ๋กœ Drag๊ฐ€ ๋‚˜๊ฐˆ ๋•Œ
drop           ๋ฐ•์Šค ์•ˆ์—์„œ Drag๋ฅผ Dropํ–ˆ์„ ๋•Œ 

 

$(function(){
        
        // drag and drop test๋ฅผ ์œ„ํ•จ.
        var uploadBox = document.querySelector('#divID');
        
        // ํŒŒ์ผ ๋‹ด์•„์ค„ input ๊ฐ์ฒด ํ•„์š”์—†์Œ 
        // event.dataTransfer.files ์—ฌ๊ธฐ์— dropํ•œ ํŒŒ์ผ์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊น€        
        
        /* ๋ฐ•์Šค ์•ˆ์— Drag ๋“ค์–ด์™”์„ ๋•Œ */
        uploadBox.addEventListener('dragenter', function(e) {
        });
        
        /* ๋ฐ•์Šค ์•ˆ์— Drag๋ฅผ ํ•˜๊ณ  ์žˆ์„ ๋•Œ */
        uploadBox.addEventListener('dragover', function(e) {
            e.preventDefault();
            console.log('dragover');
        });
        
        /* ๋ฐ•์Šค ๋ฐ–์œผ๋กœ Drag๊ฐ€ ๋‚˜๊ฐˆ ๋•Œ */
        uploadBox.addEventListener('dragleave', function(e) {
            console.log('dragleave');
        });
        
        /* ๋ฐ•์Šค ์•ˆ์—์„œ Drag๋ฅผ Dropํ–ˆ์„ ๋•Œ */
        uploadBox.addEventListener('drop', function(e) {
            e.preventDefault();
            console.log('drop');
            
            //ํŒŒ์ผ ์ด๋ฆ„์„ text๋กœ ํ‘œ์‹œ
            var files = e.dataTransfer.files;
            for(var i = 0; i < files.length; i++){
            var file = e.dataTransfer.files[i];
            console.log('file '+[i]+' name : ' + file.name);
            console.log('file '+[i]+' size : ' + file.size);
            console.log('file '+[i]+' type : ' + file.type);
            }
            
            // ํŒŒ์ผ drag drop ํ›„ ํ•จ์ˆ˜ 
            fnInsert();
        });
});