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);
}
};