• 締切済み

Javascriptでファイルを読み込むには

ブラウザで開いたHTML上で動くJavascriptでローカルドライブ上の多数のファイルの内容を読みたいと思います。どのような方法が考えられますか。また、その中でお薦めはどれですか。 Windows10を考えていますが、できればWindows7でも可能な方法だと有り難いです。インターネット上のサービスの利用は考えず、LAN内で完結するようにします。パス・ファイル名については既知のものだけなので調べる必要はありません。 当面必要ないのですが、 ・読み取りのみでファイル名の取得も必要な場合 ・書き込みが必要な場合 それぞれについても回答がいただけるならぜひお願いします。

  • wek00
  • お礼率75% (55/73)

みんなの回答

回答No.3

セキュリティーの観点から、ブラウザ上で実行されるJavaScriptからは ローカルの任意のファイルを自由にアクセスすることはできません。 そんなことができてしまうと、個人の書類や写真やメール送受信データなどの 個人情報を簡単に盗み出すことができてしまいますので。 ただし、HTML5のFile APIで、利用者が指定したファイルに限定して ローカルのファイルにアクセスすることが可能です。 (多数のファイルを一括でドラッグ&ドロップで指定することもできます) 多数のファイルというのが、パスが固定であるなら 利用者にそのパスの全ファイルを一括でドラッグ&ドロップしてもらって、 JavaScript側で必要なファイルのみ読むようにプログラムする方法もあろうかと。 (ご参考) https://www.html5rocks.com/ja/tutorials/file/dndfiles// もしくは、 ・ローカルのファイルを 利用の都度 zip等でまとめてもらって  サーバーにアップロードしてもらうとか ・LAN内ならば、サーバー側からクライアント機のファイルが読めるように  Windowsのファイル共有をしてもらうとか ・該当のファイルは、ローカルに保存しないでリモート保存する運用にするとか 等 して、JavaScriptでなくサーバー側のプログラムで読んで 結果を、HTMLに埋めるか、JavaScritのAjaxで戻すとかって形になるかと。

wek00
質問者

お礼

回答ありがとうございます。調べてみます。

wek00
質問者

補足

本当は検証結果を載せてアドバイスをもらいたかったのですが、質問の締め切りまでに時間がとれる見込みがないため補足欄ですが全ての回答に対しまとめてお礼をして締め切らせていただきます。ありがとうございました。 当初Same origin policy回避の為、Firefoxの昔のバージョンを使う・Chrome系ブラウザで--allow-file-access-from-filesオプションを使うなどを考えていましたが常用のブラウザと同時に運用できるようセットアップするのがやや面倒ということで尻込みしていました。いろいろな方法を知ることができ助かりました。以前ダウンロードしたsHTTPdがあるので、それ経由で取得する方法から試してみようと思います。

  • asciiz
  • ベストアンサー率70% (6637/9404)
回答No.2

JavaScriptには基本的に、ファイル入出力機能がありません。 ローカルでWebサーバ(httpサービス)を稼働させれば、URLにてファイルを参照することは可能です。(でもWeb公開ディレクトリ以下のみ) そしてCGIの助けを借りて、任意の内容を書き込み権限のあるディレクトリに任意のファイル名で保存する、なんてサービスを作ることも可能です。 …ですがHTML5より FileSystem API というものが用意されました。 これを用いて、JavaScriptから直接ローカルボリュームに対するファイルの読み書きが可能になります。 >FileSystem API について知る - HTML5 Rocks >https://www.html5rocks.com/ja/tutorials/file/filesystem// 「FileSystem API」で検索すると他にもいろんな解説やサンプルが出てくると思うので見てみてください。 ただ、「ローカルストレージ」っていう言葉が、HDDやSSD等の話ではなく、ブラウザ内部のデータ保存域のことを指していることがあります(そちらの仕組みの方が早く出来たので)。 JavaScriptはブラウザ上で動く言語であるため、そっちの話が混じってくることもあります。解説を検索・読みこむ際には気にかけておきましょう。

wek00
質問者

お礼

回答ありがとうございます。調べてみます。

  • ballville
  • ベストアンサー率47% (233/487)
回答No.1

LAN内にhttpサーバを建てて、ブラウザでアクセスすると、 結局Web上のHTMLと見なされてローカルドライブにアクセスすることはできません。 fileタグでユーザに指定させる方法も、ファイルがあまりに多数になると非現実的でしょう。 LAN内にHTML、JS、CSSなどを置いておき、ブラウザからfile://プロトコルでアクセスさせるのが手っ取り早いと思います。 Windows限定のようなので、いっそのこと、htmlでなくhtaにしてしまうのも手です。HTAのショートカットをユーザのデスクトップに置いておけば、ダブルクリック一発で起動できます。

wek00
質問者

お礼

回答ありがとうございます。調べてみます。

関連するQ&A

  • CSS, Javascript読み込めない

    Windows10のノートパソコンを使用しています。各ブラウザの設定は初期設定のままです。 ローカル(PC内)でHTMLファイルにCSSファイル1つとJavascriptファイル1つを読み込ませ、Google Chrome, Microsoft Edge, Internet Explorerで開いたのですが、どのブラウザでもCSSもJavascriptも認識されていません。 ファイル名とそのパスやソースコードを確認しましたが、記述に間違いはありません。htmlファイルと同じ階層にCSSファイルとJavascriptファイルを入れています。 Google Chromeの検証機能で確認するとCSSとJavascriptのファイルが見つかりませんとなっています。 ネットで調べましたが原因は不明です。以上のことから、CSS、Javascriptが読み込めない原因として考えられることを教えて下さい。

    • ベストアンサー
    • HTML
  • jsファイルを閲覧者がダウンロードできないようにする方法は?

    JavaScriptを外部ファイルとして、<SCRIPT></SCRIPT>でHTML内で指定し呼び出していますが、jsファイルの所在パスとファイルがそこに記述されているので、閲覧者にHTMLソースを覗かれて、ブラウザで直接、そのパスとファイル名にアクセスされると、簡単にjsファイルがダウンロードできてしまう。 これを防ぎたいのですが、不可能でしょうか? それとも何か良い方法はありますでしょうか?

  • HTMLやJavaScript言語でファイル操作を行えるか?

    HTMLやJavaScript言語を使った事のない初心者です。 指定したファイルを開く操作や指定した動画ファイルをWebブラウザで閲覧する、などの操作をHTMLまたはJavaScript言語で行いたいのですが。可能でしょうか。可能でなければ、特に後者の、動画ファイルをWebブラウザで閲覧をしたい場合、どの言語で開発を行えば、閲覧する事が可能でしょうか。 教えて下さい。

    • 締切済み
    • CSS
  • JavaからJavascriptの呼び出し

    教えてください。 ある決まったフォーマットのHTMLファイルがあり、その中のいくつかの要素をJavascriptで取得するということをしています。 HTMLファイルはサーバ上にあるため、ブラウザでアクセス→Javascriptで取得ということをしていたのですが、ブラウザで開くと言う処理が手間になってきたのでHTMLファイルから直接取得できないかと考えました。 まずはJavaでDOMを使ってHTMLを解析しようとしたところ、HTMLの形式が正しくない(XHTMLになっていない?)ため、エラーが発生してしまいました。HTMLの形式は修正不可のため、私が調べた限りでは現状のまま進めるとなると、1つずつタグを解析するしか方法がないように思えました。 例えば、<td id="hoge">hoge</td>の中身を取得しようとした場合、javascriptならgetElementByIdですぐに取得できますが、javaだと文字列として”<td id="hoge">”を検索するといった動作が必要かと思われます。 そこで、すでにあるjavascriptをjava上から呼び出し、同じ結果を取得できないかと考えました。 まず、この方法は可能でしょうか?可能だとすると参考になるようなサイトを教えていただけると助かります。 また、上記以外にもっとスマートなやりかたがある場合は、教えていただけないでしょうか。 説明が下手で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • Java
  • javascriptのPHP化について

    宜しくお願い致します。 javascriptの外部ファイルをPHP化して、サーバサイドで動的に生成した内容を吐き出し、それをHTML側でjavascriptの外部ファイルとして受け取って処理しております。 この場合のブラウザがアクセスした際に処理される順番は・・・ (1)HTMLの読み込み開始 (2)header内のjavascript外部ファイルの読み込みと実行 (3)HTMLファイルのbody以下を読み込み (4)結果をブラウザに返して表示 という流れになるはずです。 この場合、(2)のjavascript外部ファイルの方がbodyより先に実行されるはずです。 しかし、javascript外部ファイル内のPHPでセッションデータを扱っている場合、(3)のbody内でPHPでセッションを定義した内容が、なぜか(2)のjavascript外部ファイルで反映されて実行されるのです。 私のイメージでは・・・ (1)HTMLの読み込み開始 (2)header内のjavascript外部ファイルの読み込みと実行  ※この時セッションは反映しない (3)HTMLファイルのbody以下を読み込み  ※この時にセッションを入れても(2)が既に実行さられているので反映しない (4)結果をブラウザに返して表示  ※結果、セッションにデータが入っておらず、php側でエラーを吐き出しjavascriptが止まる という様になるかと思ってましたが、なぜか実行されます。 javascriptはHTMLが全部読み込まれてから実行されるのでしょうか?

  • Javascriptでファイルを開きたい

    現在社内用のWEBアプリを開発しておりまして、 クライアント側でjavascript、サーバー側でPHPとMySqlを利用しています。 クライアント側で検索ワードを入力すると、サーバー側でデータベースを検索して該当するレコードのファイルパスを返してくれるようになっています。 現状で返ってくるパスは絶対パスでネットワークドライブのN:\data\ファイル名といった感じで jpgやpdf、エクセルファイルなどです。 かえってきた結果をリストボックスなどにセットして、クライアントがそれをクリックするとそのファイルを開く、ということを実現したいのですがやり方がよくわかりません。 開くアプリケーションは指定する必要はなく、windows上で拡張子に関連付けされているもので構いません。 xlsファイルならエクセルが起動して、といった感じです。 対象ファイルを印刷するコマンド等も発行できると尚ありがたいです。 ちなみにgoogleで調べて以下のようなことを試してみたのですが、 var wsh = new ActiveXObject("WScript.Shell"); wsh.exec("cmd.exe N:\data\sample.bmp"); クライアント側がアクセスしているのはサーバー/xxx.phpなせいか ランタイムエラーと出て実行されませんでした。 なお、上からブラウザをchromeで指定されているので、実は上のコードは結局使えないようですが・・・ ただ現状でどのブラウザでも対応策が見えてないので、chromeで出来れば申し分ないのですが、 ひとまずブラウザは問いません。 ご存知の方いらっしゃればよろしくお願いします。

  • javascriptでフォルダ内のファイル名を検索して取得できますか?

    javascript初心者です。宜しくお願いします。 javascriptでフォルダ内のファイル名を検索して取得することは できるのでしょうか? 一応、本やネットで調べてみたんですが そういった記述は見つかりませんでした。 やりたい事のイメージとしては HPに表示させたHTMLファイル名クリックしたら そのHTMLファイルに飛ぶといった処理をHTMLで記述するのではなく、 javascriptでそのファイル名を自動で取得してそれをHP上に表示させたいのです。 いちいちHTMLでファイル名を書いてリンクさせるのが面倒なので そこを自動化できないかと考えたわけですが これはjavascriptでできるでしょうか? 回答宜しくお願いします。

  • Javascript外部ファイルが読み込めません

    外部.js ファイルに記述した関数の呼び出しが、 Windows + IE6 だとできるのですが、 Windows + NN7 Mac + IE5 だとできません。 エラーメッセージすら出ず、無反応の状態です。 もちろん、ブラウザの設定ではJavascriptはONです。 呼び出し方は <a href="javascript:関数名('引数');"></a> <a href="#" onClick="関数名('引数');"></a> の両方を試しましたが、 どちらも Windows + IE でしか動きません。 どうすれば正常に動くようにできるでしょうか? とても困っています。 どなたかよろしくお願いいたします!

  • JavaScriptでUpload

    社内ウェブサイトです。ローカル上にあるファイルを指定のファイルサーバへアップロードさせたいのですが、JavaScriptで可能ですか?(または他の方法はありますか?) すいません、当方、HTMLの知識はありますが、JavaScriptは既存の物に手を加えてカスタマイズする知識ほどしかありません。 よろしくお願い致します。

  • (javascript)HTMLで指定した画像パスに画像ファイルがない

    (javascript)HTMLで指定した画像パスに画像ファイルがない場合、別のファイル名の画像に差し替える方法が知りたいです。 以下のようにimgフォルダ内にある画像ファイル名をPHPでゲットしているのですが、その画像ファイルがない場合、確実にimgフォルダ内に存在する画像ファイルと差し替えたいのです。 print("<img src=img/". $item->getImage(). "border=0>\n"); <img src=img/cat.jpg border=0>が存在しないなら、<img src=img/dog.jpg border=0>を表示する。 javascript等、解決する方法がありますか? ご教授お願いします。 よろしくお願いします。<(_ _)>

専門家に質問してみよう