3

ボタンがあります。ボタンをクリックして、Web ページに表示されている一部のデータをダウンロード用のファイルにエクスポートしたいと考えています。

私はこれをこのようにやっています:私はexport.php. データをパラメータとしてPHPファイル(別のパラメータはファイル名)に送信すると、PHPサーバーがファイルを作成してデータを書き込み、ファイルを送信します。コードは次のようなものです:

$filename = $_GET['filename'] . '.csv';
$export = $_GET['export'];
$writer = fopen($filename, 'w') or die('cannot create');
fwrite($writer, $export . "\n");
fclose($writer);

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.basename($filename));
readfile($filename);
unlink($filename);

exit();

データが短い場合は問題なく動作します。しかし、データが長い場合、データは URL の一部として渡されるため、"Request-URI Too Large" エラーが発生します。

それを行う別の方法はありますか?JavaScriptを使って直接データを書き込むことはできますか?

4

3 に答える 3

4

POST を使用する必要があるときに、GET を使用して export.php に送信しているようです。GET は 2048 文字に制限されていますが、POST は制限されていません。

于 2012-07-19T21:59:10.320 に答える
2

データをサーバーに POST する必要があります。FORM タグの METHOD を POST に変更します (php コードではなく html で)。

各ブラウザはクエリ文字列のサイズと URL の長さを制限しており、制限はブラウザによって異なります。ただし、非常に大量のデータをサーバーに POST できます。唯一の制限は、ユーザーのアップストリーム帯域幅と忍耐力です。

于 2012-07-19T22:02:01.607 に答える
1

データをクエリ文字列として渡す代わりに、javascript を使用して iframe を作成し、フォームを作成してから php ファイルに投稿します。

jquery を使用している場合は、優れたチュートリアルhttp://tutorialzine.com/2011/05/generating-files-javascript-php/があります。

于 2012-07-19T22:03:56.330 に答える