• ベストアンサー

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

  • ブラウザからFTPアップロードするとローカルが表示される

    FTPソフト(ffftpなど)を使用せずに、ブラウザから直接ファイルをアップロードを試してみたいのです。 手順通りに実行すると、ftpでサーバを開くところまでは順調にいくのですが、 そこへ、ファイルを「ドラッグ&ドロップ」すると、 ファイルがアップロードされず、 ローカルフォルダにあるファイル(アップロードしようとしたファイル)がブラウザで表示されます。 これはどうしてでしょうか? IE最新版でも、FIREFOXでも同じ状況になります。 どのサイトの説明を見ても、ブラウザの画面にファイルを「ドラッグ&ドロップ」すればOKということになっているのですが・・・ 原因がわかる方、どうか教えてください。

  • FFFTPを使ってサーバーのファイルを直接ローカルにドラッグ&ドロップでダウンロードできない

    フリーの「FFFTP」を使って、サーバーのファイルを直接ローカルにドラッグ&ドロップしてダウンロードしようとしているのですが、 「FFFTP」上でしかドラッグ&ドロップによるダウンロードができません。 もう一つのPCでは直接ローカルにドラッグ&ドロップでダウンロードすることが可能なので、何かできない原因があるのかと思いまして質問させていただきました。 ご回答よろしくお願い致します。

  • ファイルのドラッグアンドドロップ

    Visual C++6.0で ListBOX上にファイルをドラッグアンドドロップ させて、そのファイルのパスの一覧を取得したいのですが どのようにすればいいのでしょうか?

  • avitulでexoファイルが開けない

    avitil開いてドラッグアンドドロップでできたと思うのですが・・・ やってみると ファイルの読み込みに失敗しました このファイルの形式には対応していないか 対応するコーデックやプラグインが 登録されていない可能性があります とでています。 以前はできたのになんでできなくなったんでしょうか?

  • lynxでローカルファイルを閲覧するには

    テキストブラウザ「lynx」について、初歩的な質問をさせてください。 lynxで、ローカルフォルダにあるhtmlファイルを閲覧したいと思っています。 ですが、「g」→「ctrl+w」で、ローカルパスを打ち込んでみたものの、うまく表示されずに困っています。 (パスは、C:\Documents and Settings\フォルダ名\index.html といったものを打ち込みました) パスの書き方が間違っているのでしょうか。 それとも、なにかlynx側の設定が足りないのでしょうか。 どなたかお分かりの方、教えていただければ助かります。

  • サーバー上にないxmlの読み込み

    amazonのWebサービスを利用して、HTML上にxmlを加工して製品情報を載せれるようなjavascriptを考えていたのですが、xmlの読み込みのところで立ち往生しております。 いろいろと模索した結果、サーバー上にないファイルはブラウザのセキュリティー制限に引っかかるため読み込めない、と言うような記述を発見したのですが、Firefox2.0では読み込めず、IE6は読み込めてしまうという現状なので困っております。 XMLHttpRequestを取得してサーバーからファイルを受け取るようにしていたのですが、Firefox2では表示されませんでした。(ローカルなファイルは表示できました。) Javascriptでの解決方法はないのでしょうか? また、別にJavascriptでないといけない分けでもなく、正直私もxmlの性質をあまりつかめていないので、もっとよい方法があれば、教えていただきたく思います。

    • ベストアンサー
    • XML
  • chromeでダウンロードしたファイル

    ブラウザの下でダウンロードしたファイルのリストがありますが、 その1つをドラックアンドドロップでブラウザ上に持っていくとダウンロードがもう一度開始されます。 ダウンロードしたページではなく、違うページでも同様のことがおきるのですが、 ダウンロードしたファイルをアップロードしてしまっているということはないでしょうか? ないとは思うのですが、突然のことでびっくりしたので確認のため質問させてください。

  • Javascript外部ファイルの読み込みについて(ブラウザにキャッシュさせたい)

    現在、製作中のサイトにおいて、webページが表示されるまで、5秒~15秒程度かかる事態が発生しています。 該当サイトでは、prototype.js等のjavascriptのライブラリを使用しており、合計で5個のjsファイルを読み込んでいます。 jsファイルの読み込み箇所を削除するとサクサクと快適になるので、jsファイルの読み込みに問題があると考え、jsファイルを圧縮したり(http://dean.edwards.name/packer/等)、ブラウザにキャッシュさせるために<script src=""での読み込み時に引数「?version=1」を追加してみたりしていますが、あまり改善しません。 読み込みの数を減らすため、prototype.jsとjquery.jsを統合するなども試してみました。(統合後のサイズは116KB) 利用環境によってはそれほど気にならない速度なのですが、IE6の環境でかなり重い場合がありますので、改善方法を探しています。 一回目の表示はともかく、2回目以降も毎回トップページ表示に5秒以上かかるのは問題がありますので…。 現時点で原因は、外部jsファイルがキャッシュされず毎回サーバーに読みにいっているために遅くなっていると思うのですが…。 ブラウザに外部ファイルをキャッシュさせる方法は何かないのでしょうか? ちなみに、重くなる環境で、他のサイト(外部JSファイル読み込み多数)のサイトを表示しても、2回目以降は重くなりません。ブラウザのキャッシュの削除も一度試しています。 参考に、現在のスクリプト呼び出し部分を記述します。 ---------------------ソースここから--------------------------- <script type='text/javascript' src='js/prototype-1602-and_jquery.js?version=1'></script> <script type='text/javascript' src='js/js.js?version=1'></script> <script type="text/javascript" src="js/lib/jquery_auto_j.js?version=1"></script> <script type='text/javascript' src='js/scriptaculous-js-181/src/scriptaculous.js?load=effects'></script> <script type='text/javascript' src='js/lightview.js?version=1'></script> ---------------------ソースここまで--------------------------- また、スクリプトはPHPで作っていますので、キャッシュを許可する記述を以下のようにしています。 ---------------------ソースここから--------------------------- session_cache_limiter('private_no_expire'); session_start(); ---------------------ソースここまで--------------------------- また、現状ではjsファイルの読み込みが原因かと考えていますが、それ以外でも改善点などがあれば、それをご指摘頂ければありがたいです。 宜しくお願い致します。 確認環境:windows XP、 IE6 HP作成スクリプト:PHP

  • localのjavascriptからアクセス

    お知恵をお貸しください. ローカルに保存されたjavascriptを記載したhtmlに ブラウザからアクセスをする際に そのjavascriptで同じローカルに保存されたファイル .txtなどにアクセスすることはできますでしょうか? もしできるのならば, txtファイルを開くという操作は, どのように記述すればよいのか教えていただけますでしょうか? よろしくお願いいたします.

  • jQueryを用いたドラッグ&ドロップについて

    jQueryを用いてドラッグ&ドロップによって要素を移動できるプログラムを書いています。 draggableとdroppableによって「要素を移動しました」とメッセージを表示させる事は出来ましたが、ドロップした所へ要素をcloneでコピーし、appendで追加するとその要素はドラッグ出来ません。 その原因として、javascriptが読み込まれた後に生成された要素に対してjavascriptが機能しないからだと思っています。 目的としましては、 1.要素をドラッグ&ドロップで移動可能とし、  2.ドロップされた所へ要素を挿入し、 3.ドロップされた順番に整列を行い、 4.また他の要素内へドラッグ可能 とした機能を実現したいと考えています。 特に3番目の「ドロップされた要素をドロップした要素内に整列を行う」箇所に重点をおいています。 アドバイス宜しくお願いします。