그때 그때/JQUERY

파일 다중선택/드래그앤드롭

web_seul 2022. 8. 24. 11:03
반응형
<div class="drop">Drag'n'Drop File Here</div>
<div class="list"></div>
<div class="status"></div>

<input type="file" name="cycleDocument" id="cycleDocument" class="" tabindex="" />
.drop {
    min-height: 50px;
    width: 250px;
    border: 1px solid blue;
    margin: 10px;
    padding: 10px;
}
if(window.FileReader) { 
  //var drop; 
  addEventHandler(window, 'load', function() {
    var status = document.getElementsByClassName('status')[0];
    var drop   = document.getElementsByClassName('drop')[0];
    var list   = document.getElementsByClassName('list')[0];

    function cancel(e) {
      if (e.preventDefault) { 
        e.preventDefault(); 
      }
      return false;
    }

    // Tells the browser that we *can* drop on this target
    addEventHandler(drop, 'dragover', cancel);
    addEventHandler(drop, 'dragenter', cancel);
    addEventHandler(drop, 'drop', function (e) {
      e = e || window.event; // get window.event if e argument missing (in IE)   

      if (e.preventDefault) { 
        e.preventDefault(); 
      } // stops the browser from redirecting off to the image.

      var dt = e.dataTransfer;
      var files = dt.files;
      for (var i=0; i<files.length; i++) {
        var file = files[i];
        var reader = new FileReader();

        //attach event handlers here...
        reader.readAsDataURL(file);
        addEventHandler(reader, 'loadend', function(e, file) {
          var bin = this.result; 

          //	div.list...
          var newFile       = document.createElement('span');
          newFile.innerHTML = 'Selected File: '+file.name+' (size: '+file.size+' bytes)';
          list.appendChild(newFile);  
          //  var fileNumber = list.getElementsByTagName('div').length;

          //	div.status...
          status.innerHTML = 'This file is ready to be uploaded upon submission.';

        }.bindToEventHandler(file));
      }
      return false;
    });

    Function.prototype.bindToEventHandler = function bindToEventHandler() {
      var handler = this;
      var boundParameters = Array.prototype.slice.call(arguments);
      //create closure
      return function(e) {
        e = e || window.event;
        boundParameters.unshift(e);
        handler.apply(this, boundParameters);
      };
    };
  });
} else { 
  document.getElementsByClassName('status')[0].innerHTML = 'Your browser does not support the HTML5 FileReader.';
}
function addEventHandler(obj, evt, handler) {
  if(obj.addEventListener) {
    // W3C method
    obj.addEventListener(evt, handler, false);
  } else if(obj.attachEvent) {
    // IE method.
    obj.attachEvent('on'+evt, handler);
  } else {
    // Old school method.
    obj['on'+evt] = handler;
  }
}

https://codepen.io/syberknight/pen/abgZNq

 

Drag'n'Drop File Upload Testbed

snagged a script to help me figure out how to add a drag'n'drop feature to a form2email script i have. don't need the validation or file upload code - ...

codepen.io

 

반응형

'그때 그때 > JQUERY' 카테고리의 다른 글

메뉴 이동  (0) 2023.05.04
체크박스 전체선택/해제  (0) 2022.07.01
반응형 swiper  (0) 2022.03.11
tab 내부 swiper 오류  (0) 2022.03.02
swiper 두개 쓰기  (0) 2021.01.11