remove folders from files:any[] - on Unix system folder ~ file. #218

Closed
fojt wants to merge 1 commits from filtr-folders into development

View File

@@ -69,7 +69,8 @@ export class FileUploader {
}
public addToQueue(files:any[], options?:any, filters?:any):void {
let list:any[] = [];
this._removeFoldersFromFiles(files)
.then((list: any[]) => {
for (let file of files) {
list.push(file);
}
@@ -100,6 +101,7 @@ export class FileUploader {
if (this.options.autoUpload) {
this.uploadAll();
}
});
}
public removeFromQueue(value:any):void {
@@ -459,4 +461,62 @@ export class FileUploader {
item._onCancel(response, status, headers);
this.onCancelItem(item, response, status, headers);
}
private _isFileTest(file: any): Promise<any> {
return new Promise((resolve: any, reject: any) => {
if (file.size !== 0) {
/*
* reader.readAsText or reader.readAsArrayBuffer
* load file into RAM
* we need a small chunk for better performance
*/
let from = 0;
let to = 100;
let chunk: any;
if (file.slice) {
chunk = file.slice(from, to);
} else if (file.webkitSlice) {
chunk = file.webkitSlice(from, to);
} else if (file.mozSlice) {
chunk = file.mozSlice(from, to);
}
let reader = new FileReader();
reader.onload = () => resolve();
reader.onerror = () => reject();
reader.readAsArrayBuffer(chunk);
} else {
reject();
}
});
}
private _removeFoldersFromFiles(files: any[]): Promise<any[]> {
return new Promise((resolve: any, reject: any) => {
let list: any[] = [];
let that = this;
let count = 0;
if (files.length > 0) {
for (let file of files) {
that._isFileTest(file)
.then(
() => {
list.push(file);
count++;
if (count === files.length) {
resolve(list);
}
},
() => {
count++;
if (count === files.length) {
resolve(list);
}
}
);
}
} else {
reject();
}
});
}
}