2017-01-20 6 views
1

В моей странице у меня был только один HTML ввод файла:Javascript загрузка несколько автогенерируемой файл форма

input type="file" name="file" files-model="service.file" id="filo" accept=".zip" /> 

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

var fd = new FormData(); 
fd.append('file', filo.files[0]);//filo is the id of the input 
//and send my http request having fd as a parameter 

Проблема в том, что теперь у меня есть автогенерированные формы на моей странице с угловым ng-repeat, поэтому я больше не могу получить свой файл с использованием идентификатора ввода, как я могу это сделать сейчас?

Приветствия,

+0

когда вы называете это 'fd.append()'? Предоставьте пример [plunker] (https://plnkr.co), пожалуйста – GProst

ответ

0

Это будет немного сложнее с JavaScript. this библиотека работала для меня. см. пример ниже.

<a class="btn btn-sm btn-primary" 
    type="file" 
    ngf-select="receiveSlectedFiles($file)"> 
    Select Logo 
</a> 

всякий раз, когда вы выбираете файл, вы получите его в receiveSlectedFiles ($ файл) функции. когда пользователь выбирает действительный файл, он будет в $ файле, если не будет $ file.

пример контроллера:

var arrayOfFiles = []; 
    $scope.receiveSlectedFiles = function (file) { 
    if (file) { 
     arrayOfFiles.push(file); 
    } 
}; 

В службе, впрыснуть Загрузить, а затем использовать ниже код для загрузки изображения:

this.uploadMultiple = function (files) { 
     var uri = yourApiUrl; 

     return Upload.upload({ 
      url: uri, 
      arrayKey: '', 
      data: { 
       files: files 
      } 
     }) 
    }; 

в контроллере, вам просто нужно передать массив файлов эта услуга.