jQuery只上传最后拖动的文件


jQuery only upload last dragged files

我按照本教程学习了如何创建DragNDrop文件上传。

它基本上由组成

<form  id='dragform'>
 <input type="file" name="file[]" id="fileC" class="inputfile" multiple />
  <label for="fileC" id='dropLabel'>
  </label>
</form>

其中输入被隐藏。

上传由完成

var $form = $('#dragform');
.on('drop', function(e) 
{
   droppedFiles = e.originalEvent.dataTransfer.files;        
   $form.trigger('submit');
});
var $input = $('.inputfile');
$input.on( 'change', function( e )
{
  $form.trigger('submit');
});
$form.on('submit', function(e)
{
  var ajaxData = new FormData($form.get(0));
  if (droppedFiles) {            
    $.each( droppedFiles, function(i, file) {
    ajaxData.append( $input.attr('name'), file );
    });
  }
 [...]
});

这意味着有两个上传文件的选项,可以选择也可以删除。在这两种情况下,文件都是使用AJAX直接上传的。现在我的问题来了:

如果我选择file1.pdf,则ajaxData仅包含文件1.pdf。如果我现在在DragNDrop区域中删除file 2.pdfFile 3.pdf则ajax Dataile1.pdffile2.pdffile3.pdf但我只希望它包含拖动的文件文件2.pdf文件3.pdf,因为file1.pdf以前已经上传过。如果我现在选择file4.pdf,则ajaxData包括file2.pdf文件3.pdffile4.pdf

我需要更改什么,以便只从表单中获取最后拖动或最后选择的文件?

现在可以工作了:

var ajaxData; 
if (droppedFiles) {
  ajaxData =  new FormData();
  $.each( droppedFiles, function(i, file) {
  ajaxData.append( $input.attr('name'), file );
   });
}
else {
   ajaxData = new FormData($form.get(0));
}
droppedFiles = "";