2015-11-19 4 views
0

Я пытаюсь обнаружить дубликаты, чтобы дать пользователям возможность удалять файлы из окна загрузки, удаляя их из массива, на который я нажимаю. Теперь у меня возникли проблемы с загрузкой списка финализированных файлов. Я не думаю, что у моего массива есть фактические данные файла.File API, upload array of files

Вот как я создаю массив файлов:

var masterList = []; 

function drop(evt) { 
    evt.stopPropagation() 
    evt.preventDefault(); 
    var fileList = evt.dataTransfer.files; //Getting the file(s) 
    buildList(fileList); //Passing the file(s) 
} 

function buildList(fileList) { 
    //Detect duplicates by comparing incoming filenames and current list 
    var currentNames = _.pluck(masterList, 'name'); 
    $.each(fileList, function(i, file) { 
     if ($.inArray(file.name, currentNames) == -1) { 
     masterList.push(file); 
     //is this pushing the file or have I lost the file handle    } else {} 
    }); 
    } 

При взгляде на объект в masterList, он показывает:

File { name: "Logo.pdf", 
    lastModified: 1429803494000, 
    lastModifiedDate: Date 2015-04-23T15:38:14.000Z, 
    size: 1511129, 
    type: "application/pdf" 
    } 

И это функция загрузки. Каждый файл в окне загрузки будет иметь своего собственного прогресс бар .:

function startUpload() { 
    if (masterList.length > 0) { 
     var finished = 0; 
     $.each(masterList, function(i, file) { 
       console.log(file); //Output above 
       var data = new FormData(); 
       data.append('file', file); //<- This is not allowed 
       //Start Upload 
       $.ajax({ 
        xhr: function() { 
         var xhr = new window.XMLHttpRequest(); 
         //Upload progress 
         xhr.upload.addEventListener("progress", function(evt) { 
          if (evt.lengthComputable) { 
          var percentComplete = evt.loaded/evt.total; 
          console.log(percentComplete); 
          } 
         }, false); 
         return xhr; 
        }, 
        type: 'POST', 
        url: 'uploader.php', 
        data: data, 
        success: function(data) { 
         //Do something successful 
        } 
       } 
       }); 

     }); 
    } 
    } 

В настоящее время я не могу получить файлы в FormData я создал и я не уверен, что это лучший способ, чтобы отправить доработанную группу на сервер.

+0

Попробуйте упростить код, и указать точную проблему. Пробовали ли вы проверять данные перед отправкой запроса и не видели файл здесь, или вы не смогли получить файл на сервере? – tungd

+0

Убрал код для ясности. Я не могу добавить список файлов в данные формы для загрузки. Он выходит из строя сразу после вывода указанного выше объекта File во время инструкции '.each()'. –

ответ

0

Я предполагаю использовать FormData с XHR JQuery ты должен сказать, что это не для обработки данных, .i.e:

$.ajax({ 
    data: formData, 
    processData: false, 
    contentType: false 
    ... 
}); 
+0

Это сработало! Для будущих посетителей вышеуказанное будет успешно добавлять и удалять файлы из списка, а затем загружать. –