- From: Marcos Caceres <notifications@github.com>
- Date: Mon, 30 Nov 2015 23:44:03 -0800
- To: WICG/directory-upload <directory-upload@noreply.github.com>
- Message-ID: <WICG/directory-upload/issues/24@github.com>
I see in the examples that you do:
```js
filesAndDirs[i].getFilesAndDirectories === 'function'
```
This seems like a heavy handed way of filtering on "is a directory", no?
Basically, what I would want to do is:
```JS
ev.dataTransfer.getFilesAndDirectories()
.then(fileOrDirs => items.map(
fileOrDir => (fileOrDir.isDirectory) ? fileOrDir.getFilesAndDirectories() : Promise.resolve(fileOrDir)
))
.then(filePromises => Promise.all(filePromises))
.then(uploadFiles)
.catch(err);
```
Or (I haven't actually tried this, but you get the idea hopefully):
```JS
async function handleDrop(e){
e.stopPropagation();
e.preventDefault();
// Not supported, so bail out?
if (!('getFilesAndDirectories' in e.dataTransfer)){
return;
}
let fileOrDirs = ev.dataTransfer.getFilesAndDirectories();
let files = fileOrDirs.reduce((collection, next) => {
let files = [];
try{
files = (item.isDirectory) ? await fileOrDir.getFilesAndDirectories() : [file];
} catch (err){
//do something useful, maybe
}
collection.concat(files);
return collection;
});
//finally
upload(files);
}
```
---
Reply to this email directly or view it on GitHub:
https://github.com/WICG/directory-upload/issues/24
Received on Tuesday, 1 December 2015 07:44:34 UTC