|
432 | 432 |
|
433 | 433 | function enhanceUpload() {
|
434 | 434 | var upload = document.body.querySelector('.upload');
|
435 |
| - if (!upload) { |
436 |
| - return; |
437 |
| - } |
| 435 | + if (!upload) return; |
| 436 | + |
438 | 437 | var form = upload.querySelector('form');
|
439 |
| - if (!form) { |
440 |
| - return; |
441 |
| - } |
| 438 | + if (!form) return; |
| 439 | + |
442 | 440 | var fileInput = form.querySelector('.file');
|
443 |
| - if (!fileInput) { |
444 |
| - return; |
445 |
| - } |
| 441 | + if (!fileInput) return; |
446 | 442 |
|
447 | 443 | var uploadType = document.body.querySelector('.upload-type');
|
448 |
| - if (!uploadType) { |
449 |
| - return; |
450 |
| - } |
| 444 | + if (!uploadType) return; |
451 | 445 |
|
452 | 446 | var file = 'file';
|
453 | 447 | var dirFile = 'dirfile';
|
|
546 | 540 | }
|
547 | 541 | } else {
|
548 | 542 | itemsToFiles = function (dataTransferItems, canMkdir, onDone, onLacksMkdir) {
|
549 |
| - function entriesToFiles(entries, files, onLevelDone) { |
550 |
| - var len = entries.length; |
551 |
| - var cb = 0; |
552 |
| - if (!len) return onLevelDone(); |
553 |
| - |
554 |
| - function increaseCb() { |
555 |
| - cb++; |
556 |
| - if (cb === len) { |
557 |
| - onLevelDone(); |
558 |
| - } |
559 |
| - } |
560 |
| - |
561 |
| - function dirReaderToFiles(dirReader, files, onAllRead) { |
562 |
| - dirReader.readEntries(function (subEntries) { |
563 |
| - if (!subEntries.length) return onAllRead(); |
564 |
| - entriesToFiles(subEntries, files, function () { |
565 |
| - dirReaderToFiles(dirReader, files, onAllRead); |
566 |
| - }); |
567 |
| - }, onAllRead); |
568 |
| - } |
569 |
| - |
570 |
| - entries.forEach(function (entry) { |
571 |
| - if (entry.isFile) { |
572 |
| - var relativePath = entry.fullPath; |
573 |
| - if (relativePath[0] === '/') { |
574 |
| - relativePath = relativePath.substring(1); |
| 543 | + function entriesToFiles(entries, files) { |
| 544 | + return Promise.all(entries.map(function (entry) { |
| 545 | + return new Promise(function (resolve) { |
| 546 | + if (entry.isFile) { |
| 547 | + var relativePath = entry.fullPath; |
| 548 | + if (relativePath[0] === '/') { |
| 549 | + relativePath = relativePath.slice(1); |
| 550 | + } |
| 551 | + entry.file(function (file) { |
| 552 | + files.push({file: file, relativePath: relativePath}); |
| 553 | + resolve(); |
| 554 | + }, function (err) { |
| 555 | + logError(err); |
| 556 | + resolve() |
| 557 | + }); |
| 558 | + } else if (entry.isDirectory) { |
| 559 | + entry.createReader().readEntries(function (subEntries) { |
| 560 | + entriesToFiles(subEntries, files).then(resolve); |
| 561 | + }); |
575 | 562 | }
|
576 |
| - entry.file(function (file) { |
577 |
| - files.push({file: file, relativePath: relativePath}); |
578 |
| - increaseCb(); |
579 |
| - }, function (err) { |
580 |
| - increaseCb(); |
581 |
| - logError(err); |
582 |
| - }); |
583 |
| - } else if (entry.isDirectory) { |
584 |
| - var dirReader = entry.createReader(); |
585 |
| - dirReaderToFiles(dirReader, files, increaseCb); |
586 |
| - } |
587 |
| - }); |
| 563 | + }) |
| 564 | + })); |
588 | 565 | }
|
589 | 566 |
|
590 | 567 | var files = [];
|
|
613 | 590 | }
|
614 | 591 | }
|
615 | 592 |
|
616 |
| - entriesToFiles(entries, files, function () { |
| 593 | + entriesToFiles(entries, files).then(function () { |
617 | 594 | onDone(files, hasDir);
|
618 | 595 | });
|
619 | 596 | }
|
|
0 commit comments