###質問
まず以下のコードをみてください
JavaScript
1 async function scanFiles(entry, tmpObject) { 2 switch (true) { 3 case (entry.isDirectory) : 4 console.log(entry); 5 const entryReader = entry.createReader(); 6 const entries = await new Promise(function (resolve) { 7 entryReader.readEntries(function (entries) { resolve(entries); }); 8 }); 9 await Promise.all(entries.map(function (entry) { scanFiles(entry, tmpObject); })); 10 break; 11 case (entry.isFile) : 12 tmpObject.push(entry); 13 break; 14 } 15 } 16 17 document.getElementById("dropzone") 18 .addEventListener("dragover", function (event) { 19 event.preventDefault(); 20 }, false); 21 22 document.getElementById("dropzone") 23 .addEventListener("drop", async function (event) { 24 event.preventDefault(); 25 const items = event.dataTransfer.items; 26 const results = []; 27 const uuid = uuidGenerate(); 28 for (const item of items) { 29 const entry = item.webkitGetAsEntry(); 30 await scanFiles(entry, results); 31 } 32 console.log(results); 33 }, false);
このコードはブラウザ内でdropzoneに指定された範囲にファイル、またはディレクトリをドラッグ&ドロップすると、そこに含まれるファイル情報のみを取得し表示するモノです。この時、ファイルならば単数、複数に対応できるんですが、ディレクトリになると単数の時のみしか動かなくなります。複数与えると、名前順に見て一番最初のディレクトリのみに対して単数の時と同じ挙動をします。
これをどうにかして、ディレクトリが複数の時でも動くようにしたいです。items.lengthを取得すると、何個ドラッグ&ドロップされたか表示することができるのですが、ディレクトリを複数指定した時には、個数はしっかり取得できています。
どうかご教授お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/05/27 07:04
退会済みユーザー
2018/05/27 07:04