完全に力技.
良い子はこんなコードを書いてはいけません.
ほんとは以下とかにPullRequest投げるか何かコメント書くべきなのだろうけど、とりあえず動けばいいので
https://github.com/ml5js/ml5-library/issues/238
classifier.load
がjsonファイルのみを指定させて、weightを指定させないため、ブラウザが勝手にjsonファイルの相対パスを適当に読み込もうとして死ぬ.(ローカルファイルに勝手にアクセスできないため)
jsonファイルの中にパスが適当に書かれていることが原因.
そこで、そのjsonファイルのパスを無理矢理dataURIのパスに変更してしまうことでこの問題を解決する.
load-btnのidを持ちmultiple属性を持たせたinputタグを用意して、以下のようのにロードする.
ファイル指定の時には必ずjsonファイルとbinファイルの両方を指定すること.
ポイントはweightファイルを先に読み込んでそのdecoded dataURIを取得して、
その中身でjsonファイルの中のweightファイルへのpathを上書きすること.
originJson[“weightsManifest“][0][“paths“][0] = weight_data;
この行をやりたいがためにjsonファイルをbase64から戻して、書き換えてまたencodeしてる.
ちなみにinputタグはこんな感じ
<input type=“file” accept=“.json,.bin” name=“jsonfile” style=“display:none” id=“load-btn” multiple>