web-dev-qa-db-ja.com

jQueryを使用したファイルの読み取り/書き込み

JQueryを取得してファイルと情報をやり取りする方法はありますか?出来ますか?どうやって?

61
menardmam

いいえ、JavaScriptはファイルの書き込みにアクセスできません。これは控えめに言っても大きなセキュリティリスクになるからです。ただし、サーバー側で情報を取得/保存したい場合は、PHP/ASP/Python /などへのAjax呼び出しを確実に行うことができます。サーバーでデータを取得/保存できるスクリプト。クライアントマシンにデータを保存することを意味する場合、JavaScriptだけでは不可能です。 Flash/Javaでできるのではないかと疑っていますが、よくわかりません。

特定のユーザーに関する信頼できない期間に少量の情報のみを保存しようとしている場合、 Web Storage API またはcookieが必要だと思います。しかし、あなたの質問から、あなたが何を達成しようとしているのかわかりません。

74

はい、可能です。

テクニックは以下に説明されています

http://jquery.tiddlywiki.org/twFile.html

37
ja.

hTML5とGoogle Gearsはどちらも、主に埋め込みSQLite APIによってローカルストレージ機能を追加します。

16
Javier

JavaScriptのexecCommand('SaveAs', false, filename);機能を使用する

編集:動作しません。このJavaScript関数はすべてのブラウザで動作していましたが、ブラウザのセキュリティを考慮してIEでのみ動作しました。ブラウザでこの関数を実行するユーザーに「名前を付けて保存」ダイアログを表示しました、ユーザーが[OK]を押すと、ファイルはサーバー側のjavascriptによって保存されます。

現在、このコードは珍しいアンティークゼロデイコレクタブルです。

// content is the data (a string) you'll write to file.
// filename is a string filename to write to on server side.
// This function uses iFrame as a buffer, it fills it up with your content
// and prompts the user to save it out.
function save_content_to_file(content, filename){
    var dlg = false;
    with(document){
     ir=createElement('iframe');
     ir.id='ifr';
     ir.location='about.blank';
     ir.style.display='none';
     body.appendChild(ir);
      with(getElementById('ifr').contentWindow.document){
           open("text/plain", "replace");
           charset = "utf-8";
           write(content);
           close();
           document.charset = "utf-8";
           dlg = execCommand('SaveAs', false, filename);
       }
       body.removeChild(ir);
     }
    return dlg;
}

次のような関数を呼び出します:

msg =  "I am the president of tautology club.";
save_content_to_file(msg, "C:\\test");
11
Eric Leschinski

PHPやASP.netなどのWebプログラミング言語を介してファイルアクセスを処理する必要があります。

これを設定するには、次のようにします。

  • ファイルの読み取りと書き込みを処理するスクリプトを作成します。これはブラウザから見えるはずです。

  • データを書き込むかデータを読み取るスクリプトにjQuery ajaxリクエストを送信します。すべての読み取り/書き込み情報を要求パラメーターで渡す必要があります。これについて詳しくは、jQuery ajaxのドキュメントをご覧ください。

潜在的にセキュリティリスクになる可能性があるため、保存するデータは必ずサニタイズしてください。ただし、これは実際には単なる標準のフラットファイルデータストレージであり、必ずしも珍しいことではありません。

Paoloが指摘したように、jQueryまたはその他の種類のjavascriptを介してファイルを直接読み書きする方法はありません。

9
jonstjohn

クッキーが最善の策です。 jquery cookieプラグインを探します。

Cookieはこのような状況向けに設計されています。このクライアントに関する情報をクライアント側に保持したい場合があります。 CookieはすべてのWebリクエストでやり取りされるため、大量のデータをそこに保存することはできません。ただし、質問に対する単純な答えで十分です。

5
Clyde

ページ内でサーバー側の処理を行わずにこれを実行したい場合は、テキスト値を非表示フィールドに吹き飛ばすこと(PHPを使用)が考えられます。次に、jQueryを使用して非表示フィールド値を処理できます。

あなたのボートに浮かぶものは何でも:)

1
Josh Stodola