MDNにフォルダをドロップして中身をリストアップするサンプルを見つけた。
FireFoxではうまく動くが、ChromeやEdgeでは・・・・・・・・・
code: 0
message: "A URI supplied to the API was malformed, or the resulting Data URL has exceeded the URL length limitations for Data URLs."
name: "EncodingError"
が出てしまう。
「APIに提供されたURIの形式が正しくないか、結果のデータURLがデータURLのURL長の制限を超えています。」
ってファイル名のせい?
しかし、C:¥aaaでも同じ結果だった。
原因は判らないけど、コードをアップしてみると・・・何故かうまくいく(アップ先)。
どうやら、httpなURLなパスにあるHTMLファイルをブラウザで開いている場合はOKらしい。
微妙だ。どっちかと云えば、
PCにコピったHTMLファイルでウマくいく方が安心なのに
得体のしれないのURLの画面のページに自分のPCのフォルダをドラッグするのは・・・
素で怖いw
と思う。
後、先の参考URLの注釈通りにreadEntries
は、100個までしか読んでくれない。
forEachはPromiseを返さないので、非同期処理を抱えてる部分を含めて、
ローカル関数に書き換えたが forEachの最終ループで再起すると
どう見ても無限ループにしか見えない
ここは、forEachをmapにして暗黙の同期化を発動する。
ついでにmapの戻り値から readEntries が空っぽを渡たさなかった場合のみ再起するようにした。
readEntries
も非同期っぽいから、ローカル関数のままか。
フォルダに203個ファイルがあっても全部書き出してくれたから、
多分大丈夫。
メデタシ、メデタシ。(かな?
あ、HTMLのINPUTタグでwebkitdirectory を指定すると
フォルダも選択できるらしい。
こっちの方が良さそう。
でも、非標準らしい。