• ベストアンサー

webブラウザからローカルファイルの読み込み

はじめまして、質問します。 webブラウザからローカルファイルの読み込みを行いたいのですが、 セキュリティーの問題でアクセスを拒否されました。 その回避法として、FileAPIによって htmlのinput要素かドラッグアンドドロップを用いて ローカルファイルを読み込めることが分かりました。 しかし、私がやりたいことは 絶対パスでローカルファイルを読み込むことです。 そのようなことは可能でしょうか? 上記の方法だとinputからフォルダをたどってファイルを選択するので 原理的には可能なような気がするのですが・・・・ 言語はjavascriptです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#177743
noname#177743
回答No.3

>その回避法として、FileAPIによって >htmlのinput要素かドラッグアンドドロップを用いて >ローカルファイルを読み込めることが分かりました。 >上記の方法だとinputからフォルダをたどってファイルを選択するので >原理的には可能なような気がするのですが・・・・ 根本的な部分で勘違いをされている気がします。ドラッグ&ドロップで渡されるのはファイルのパスなどではありません。これはFileListオブジェクトという専用のオブジェクトで、その中に個々のファイルに関するFileオブジェクトが保管されています。このFileオブジェクトをFileReaderなどに渡すことでその内容を読み取ったり出来る仕組みになっています。 ただし、ここで勘違いしてはいけないのですが、このFileオブジェクトには、ファイルのパス情報は含まれていないのです。あるのはファイル名の情報だけ。そのファイルがどこにあるかといったことはJavaScript側からは隠蔽されており、スクリプトからタッチできません。 つまりJavaScriptでは、「パスによるファイルの指定」は過去も現在も首尾一貫して禁止されており、不可能なのです。 ドラッグ&ドロップは、ユーザーの能動的な動作により起こるイベントです。つまり、ユーザーが自分で「このファイルをアップロードしよう」といった具合に操作した結果の行動です。これに対し、「ファイルのパスによるファイルアクセス」は、ユーザー不在であり、プログラムが自分で勝手にファイルにアクセスできることを意味します。両者は全く違います。

milky_splash
質問者

お礼

とても詳しくわかりやすい説明をありがとうございます! 勘違いしている部分も理解できて、とても助かりました。 協力ありがとうございました。

その他の回答 (2)

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.2

Cドライブをドラッグアンドドロップすればいい それかローカルで動かすなら可能 もしくはスマホなら実質SDカードの絶対パスを指定できたはず

milky_splash
質問者

お礼

そのようの方法もあるのですね! 参考になりました。 ありがとうございました。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 同じくセキュリティーの問題で無理です。 それが出来るといろいろ悪意のあるコードが書けてしまいます。

milky_splash
質問者

お礼

やはりそうですか・・・ ほかの方法で考えてみます。 ありがとうございました!

関連するQ&A