2

ユーザーが「名前を付けて保存」をクリックしてテーブルデータを保存できるようにするコードの最良の方法と考えられるものは何ですか?

これがシナリオです

mysql db (php で作成されたアプリ) からのデータを一覧表示する Web ページを作成しました。

このページにはデータが一覧表示され、[名前を付けて保存] ボタンが表示されるため、データをユーザーのローカル コンピューター (csv、xml など) に保存できます。

テクニカル

これを行うための最良の方法は次のとおりですか?1)そのmysql dbを照会したのと同じphpプログラムからファイルにデータを保存しますか?2) ユーザーが Web ページで [名前を付けて保存] をクリックすると、ajax は #1 (サーバー) からユーザーのローカル コンピューターにデータをストリーミングします。

xml データ (opendocument、openxml) と php の Excel/xml ライブラリを作成する方法についていくつか読んだことがありますが、フローを完全には理解していません。クエリ時にファイルを作成する必要があるか、データがユーザーのローカルコンピューターにどのように到達するかなど。または、これを行う別の方法はありますか?

ありがとう

4

1 に答える 1

1

主に 2 つのアプローチがあります。

  • サーバー上にファイルを生成します。これは、最初のユーザーがダウンロード リンクをクリックしたとき、または誰かがファイルをダウンロードするたびに、何よりも先に行うことができます。これを行うには、Web サーバーまたは Web フレームワークによってファイルの場所として解釈されるダウンロード リンクを提供します。

    http://example.org/uploads/file1.csv

    または、次のようなダウンロード用のカスタム アクション/ページを作成します。

    http://example.org/download.php?filename=file1.csv ( PHP でダウンロード リンクを作成する方法)

  • クライアント (ブラウザー) によってダウンロードとして解釈される HTTP 応答を生成します。余分なファイルをディスクに書き込む必要はありませんが、CSV ファイルの行など、プログラムで簡単に生成できるファイルタイプに最も役立ちます。CSV ファイルの例を次に示します: http://code.stephenmorley.org/php/creating-downloadable-csv-files/

ブラウザが知っている方法で、ファイルのダウンロードを処理し、別の Web ページを処理するのではなく、HTTP ヘッダーを使用します。

// specify the MIME-type 
// (e.g. if it's an image or PDF most browser can display the content directly)
header('Content-Type: text/csv; charset=utf-8');

// The Content-Disposition response-header field has been proposed 
// as a means for the origin server to suggest a default filename 
// if the user requests that the content is saved to a file.
header('Content-Disposition: attachment; filename=data.csv');

詳細については、http ://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html を参照してください。

最終的には、あなたとあなたの要件次第です。トラフィックの少ないサイトで、ファイルが小さいですか? - 事前にファイルを生成し、Web サーバーにダウンロード リンクを処理させます。小さなファイルがたくさんあるトラフィックの多いサイトですか?- その場で生成することができます (CSV の例のように)。誰もがすべてのファイルをダウンロードできるわけではなく、認証は PHP プロジェクトによって管理されますか? - カスタムの download.php スクリプトを使用して権限を確認する方が簡単です。

于 2012-12-19T21:07:52.823 に答える