Removing file from multiple files uploader on button click when using HTML5 file input

后端 未结 5 598
一个人的身影
一个人的身影 2020-11-29 01:53

How to add remove button here like simple remove one by one in files queue like this

The reason why im not using free file upload plugins w

5条回答
  •  猫巷女王i
    2020-11-29 02:42

    $(function () {
    
      var dropZoneId = "drop-zone";
      var buttonId = "clickHere";
      var mouseOverClass = "mouse-over";
    
      var dropZone = $("#" + dropZoneId);
      var ooleft = dropZone.offset().left;
      var ooright = dropZone.outerWidth() + ooleft;
      var ootop = dropZone.offset().top;
      var oobottom = dropZone.outerHeight() + ootop;
      var inputFile = dropZone.find("input");
    
      var filesArr = [];
    
      function showFiles() {
        $('#filename').html("");
        var fileNum = filesArr.length;
        for (var i = 0; i < fileNum; i++) {
    
                                    objectURL = URL.createObjectURL(filesArr[i]);
    
          $('#filename').append('
    '+ i + ' ' + filesArr[i].name + '  X
    '); } } function addFiles(e) { var tmp; // transfer dropped content to temporary array if (e.dataTransfer) { tmp = e.dataTransfer.files; } else if (e.target) { tmp = e.target.files; } // Copy the file items into the array for(var i = 0; i < tmp.length; i++) { filesArr.push(tmp.item(i)); //console.log(i); } // remove all contents from the input elemnent (reset it) inputFile.wrap('
    ').closest('form').get(0).reset(); inputFile.unwrap(); showFiles(); } document.getElementById(dropZoneId).addEventListener("dragover", function (e) { e.preventDefault(); e.stopPropagation(); dropZone.addClass(mouseOverClass); var x = e.pageX; var y = e.pageY; if (!(x < ooleft || x > ooright || y < ootop || y > oobottom)) { inputFile.offset({ top: y - 15, left: x - 100 }); } else { inputFile.offset({ top: -400, left: -400 }); } }, true); if (buttonId != "") { var clickZone = $("#" + buttonId); var oleft = clickZone.offset().left; var oright = clickZone.outerWidth() + oleft; var otop = clickZone.offset().top; var obottom = clickZone.outerHeight() + otop; $("#" + buttonId).mousemove(function (e) { var x = e.pageX; var y = e.pageY; if (!(x < oleft || x > oright || y < otop || y > obottom)) { inputFile.offset({ top: y - 15, left: x - 160 }); } else { inputFile.offset({ top: -400, left: -400 }); } }); } document.getElementById(dropZoneId).addEventListener("drop", function (e) { $("#" + dropZoneId).removeClass(mouseOverClass); addFiles(e); }, true); /*inputFile.on('change', function(e) { addFiles(e); });*/ $('#filename').on('click', '.closeBtn', function(e) { e.preventDefault(); e.stopPropagation(); var divElem = $(this).parent(); var index = $('#filename').find('div').index(divElem); if ( index !== -1 ) { $('#filename')[0].removeChild(divElem[0]); filesArr.slice(index,1); } }); inputFile.on('change', function(e) { $('#filename').html(""); var fileNum = this.files.length, initial = 0, counter = 0; for (initial; initial < fileNum; initial++) { counter = counter + 1; objectURL = URL.createObjectURL(this.files[initial]); $('#filename').append('
    '+ counter + ' ' + this.files[initial].name + '  X
    '); } }); });

提交回复
热议问题