ZAKO-PG

こんなザコがプログラマーなの?

JavaScriptでローカルファイル・フォルダを開く

スポンサーリンク

前回はC#で外部アプリケーションを実行する方法を模索していましたが、今回はJavaScriptでローカルファイル・フォルダを開く方法を考えていきます。

ActiveXObjectを使う

ググってまず出てくるのはActiveXObjectを使用する方法です。
Microsoft拡張機能なので、ExcelやらWordやらを開くことができます。

使う前にインターネットオプション > セキュリティ から以下のオプションを有効にする必要があります。
これはデフォルトで無効なので、ユーザーに設定させるのはハードルが高そうですね。

  • ActiveX コントロールとプラグインの実行
  • スクリプトを実行しても安全だとマークされている ActiveX コントロールのスクリプトの実行

さらに、なんとActiveXObjectはInternetExplore限定機能でした・・・。
このご時世にWebで「IEのみサポートで~~~すwww」なんて言ったらハチの巣にされますので、この案はなし!!!

file://を使う

結局なんでも使えるのがいいよね^^ということで、file://を使うことになりそうです。

こちらもまあ一癖ありますが、とりあえずIE、Edge、FireFoxはローカルのフォルダ・ファイルを開いてくれたのでOK。
ただしChromeだけ、フォルダはページ内でリスト表示、ファイルはダウンロードされたので、挙動が若干違うようです。

また、Safariはfile://で指定すればFinderは開くものの、求めているフォルダとは違うフォルダが表示されたりするので、あまり使えなさそうでした。
MacユーザーはChrome or FireFox使ってね!になりそう。

まとめ

file://を使えばとりあえずファイル・フォルダは開けはしますが、悪意のある攻撃をうけて改竄され、ウイルス入りファイルを実行されたら目も当てられないです。

今回、業務アプリでガッチガチにアクセス制限をしているサーバーだったので、ギリ大丈夫という判断になりましたが、そうでない方は開くパスの値を検査したり、結構厳しめにしたほうがいいかもしれません。