質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

3848閲覧

javascriptでローカルにデータを書き出しできるか

kihokutarou

総合スコア59

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/10/07 14:51

htmlファイルにて、ユーザーにボタンを押下させ、現在時刻を取得できるとします。その時刻を外部ファイルのcsvなりjsonなりに書き出しをしたいと考えていますが、これを活用する環境が完全オフラインでphp等が使えません。
javascriptで可能ですか?可能であれば参考サイトや使える技術を教えていただけると幸いです。

オフライン環境下の部屋にofficeの入っていないパソコンがあり、そこを通過するユーザーが自分の名前を選んで現在時刻ボタンをクリック、これらを後に集計したいと考えている次第です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/10/07 20:28

これでそもそもどうやってユーザーはアクセスできるのでしょうか。社内環境であっても何かしらのネットワーク内にあるはずですし、社内ネットワーク構築済みなのであればローカルPCにApache入れればPHPは動きアクセスも可能なはずです。 >これを活用する環境が完全オフラインでphp等が使えません。
kihokutarou

2018/10/08 00:06

申し訳ありません。「通過する」とは物理的にパソコンの前を通過するの意味で、アナログに手を使ってアクセスするということでした。
guest

回答4

0

ベストアンサー

ブラウザはセキュリティ上の理由で、ユーザーに断りなく任意のファイルを出力することはできません。
(それができたらウィルスをダウンロードさせ放題ですから)

ただし条件次第では方法はあると思います。
私が思いつくのは、
0. そのPCにWebサーバーをインストールし、ブラウザから http://localhost/ などとしてアクセスし、php 等で出力処理を記述する。
→準備は面倒ですが、目的は達成されるでしょう。
→node サーバーをインストールすれば、サーバーサイドもJavascript で記述できますよ
0. JavaScript の Blob APIを利用し、内部で生成したCSVやjsonのテキストデータのダウンロードアドレスを作成し、ファイルを出力したいときにそのアドレスにアクセスしてファイルをダウンロードする。
→随時出力はできませんが、集計したいときに集計する、という方法ならこれで十分でしょう。
0. まわりくどいことはせず、textarea 等に結果を出力するようにし、テキストを手作業でコピーし、ファイルに貼り付ける。
→これはできたとはいわないか……
0. localStorage API を利用する
→出力形式が、Json や csv ではありませんが、ブラウザが管理している専用ファイルをデータベースとして利用できます。
→2. と組み合わせても〇
→ただし、ブラウザによってはfile: プロトコルでは利用できないらしいので、利用できるブラウザを探す必要があります。

といったところですかね。
クリックされるごとにファイル出力を行うなら、1. の方法しかありませんが、
ある程度結果をメモリにためておいてよいなら2. 4. も使えます。

投稿2018/10/07 15:44

R.Mizukami

総合スコア1086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kihokutarou

2018/10/08 00:07

ご回答ありがとうございます。 4の方法が頭にありました。やはりそのあたりが方法としてはよさそうですね。参考になりました。
guest

0

こんなのでは駄目なのでしょうか?
https://qiita.com/wadahiro/items/eb50ac6bbe2e18cf8813

投稿2018/10/07 15:39

wwbQzhMkhhgEmhU

総合スコア343

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kihokutarou

2018/10/08 00:08

ご回答ありがとうございます。 参考になりそうなサイトなのでしばらく勉強させていただきます。
guest

0

「通過する」とは物理的にパソコンの前を通過するの意味で、アナログに手を使ってアクセスするということでした。

つまり、そのPCは社内ネットワークからも遮断されていると。で、そのPCを任意に触るということですかね・・。

ただ、それだと誰が触ったかというところは確実にはわからないのでは?
「自分の名前を選んで」とはいて、自分の名前以外も選ぶことができてはデータの信頼性は保証できませんし。
まあローカルでオフラインでもそのPCだけでローカルサーバー立ち上げればPHPは使えるので(”XAMPP”で検索)、
簡単でもログイン認証の仕組みを入れられたほうが良いかと思います。
JavaScriptでローカルファイルの操作は基本的にはできません。
どうしてもJavaScriptを利用したければAjaxを介してPHPなどを実行することになります。

投稿2018/10/08 00:13

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ブラウザからローカルディスクにアクセスすることは出来ません。
ブラウザを使用したインターフェイスにこだわるのであれば、localhost として Web サーバを建てて、そちらでサーバサイド処理をさせてはいかがでしょうか?

投稿2018/10/07 15:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kihokutarou

2018/10/08 00:09

ご回答ありがとうございます。 後だしで申し訳ありません。後々ほかのパソコンでも動かすことを考えると、仮想サーバーの設置は現実的でなく、試しましたが見送る方向でおりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問