Upload multiple files in embedded form

@manmohanm

Yes it was, but we build our own solution:

Here are some code snippets to get you started:

<table class="table">
  <tbody>
    <tr ng-repeat="file in files">
      <td>
        <a role="button" ng-click="openDocument(file)">{{file.name}}</a>
      </td>
      <td>
        <span class="dropdown">
          <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" required>
            {{dateitypname(file.typ)}}
            <span class="caret"></span>
          </button>
          <ul class="dropdown-menu">
            <li ng-repeat="dateityp in dateitypen" ng-click="setDateityp(file, dateityp.wert)"><a>{{dateityp.name}}</a></li>
          </ul>
        </span>
      </td>
      <td>
        <span class="glyphicon glyphicon-remove" ng-click="removeDocument(file)" style="cursor:pointer"></span>
      </td>
    </tr>
  </tbody>
</table>
<div>
  <label class="btn btn-default btn-file">
    Browse <input type="file" id="fileUpload" style="display: none;" onchange="angular.element(this).scope().upload(this, angular.element(this).scope().files, angular.element(this).scope().dateitypen[0])" multiple>
    <span class="glyphicon glyphicon-folder-open"/>
  </label>
</div>

$scope.upload = function(fileUpload, dateien, standardDateityp) {
  for (let i = 0; i < fileUpload.files.length; i++) {
    let file = fileUpload.files[i];
    let mimetype = file.type;
    if (!mimetype || mimetype == '') {
      if (file.name.toLowerCase().indexOf('.msg') > -1) {
        mimetype = 'application/vnd.ms-outlook';
      }
    }
    let datei = { name: file.name, typ: standardDateityp.wert, mimetype: mimetype, data: undefined, blob: undefined };
    dateien.push(datei);
    $scope.retrieveFiledata(file, datei);
  }
  $scope.erfa.$setDirty();
  $scope.$apply();
};

$scope.openDocument = function (file) {
  if (window.navigator.msSaveOrOpenBlob) {
    if (file.href) {
      $http.get(file.href, {responseType: 'arraybuffer'}).then(
        function successCallback(response) {
          window.navigator.msSaveOrOpenBlob(new Blob([response.data], {type: file.mimetype}), file.name);
        },
        function errorCallback(response) {
          console.log('error downloading document: ' + response);
        }
      );
    }
    else {
      window.navigator.msSaveOrOpenBlob(new Blob([file.blob], {type: file.mimetype}), file.name);
    }
  } else {
    window.open('data:' + file.mimetype + ';base64,' + file.data);
  }
};