0

私はそれをすべて最善の方法で行う方法がわかりません(PHP、PHP + javascriptだけ...):

ユーザーが、以前に生成された他のレポート ファイルと一緒にリストされるレポートファイルを生成するフォーム データを送信できるようにする必要があります。ユーザーが生成直後に保存することを選択できるようにしたいと思います (content-disposition ヘッダー)。希望しない場合でも、リンクはリストに表示されます。

そこで、 「Content-Disposition: attachment」ヘッダーを送信してやってみました。すべてがうまく機能します(前述のリンクからさらに利用できるようにサーバーに保存されたファイルであり、ユーザーがシステムに一度に保存できるように、ファイルも送信されます)。問題は、応答で更新された HTML を同時に取得できないため、レポート リストが新しいレポートで更新されないことです (できますか?)。

Location ヘッダーも送信しようとしましたが、これは以前の機能を壊しているようです。

私がばかだと思うかもしれませんが、フォームを送信した後に新しく作成されたファイルをリストに表示するために、 Content-Disposition ヘッダーの代わりに javascript を使用してみました。スクリプトは window.open() を呼び出しますが、これによりブラウザでファイル (CSV ファイル) がそのまま純粋なプレーン テキストで開かれます。もう 1 つの方法として考えられるのは、最初に新しく作成されたレポートを HTML に提供し、サーバーへの ajax を介して 2 回目の呼び出しを行うスクリプトを加えてから、今度は PHP がファイルの内容を含む Content-Disposition ヘッダーを送り返すことです。しかし、これは私にはねじれすぎているようです。それとも、単独のユーザー インタラクションでこれを行うのが最善かつ最も一般的な方法ですか?

どう思いますか?

4

1 に答える 1

1

AJAX経由でファイル名を返し、次に.csvファイルを保存するファイルをwindow.open()作成し、ダウンロードを強制するファイルを追加する方法を使用します。.htaccessAddType application/octet-stream .csv

于 2013-09-05T16:17:37.440 に答える