ビューに表示されているテーブルの内容を CSV ファイルとしてダウンロードする必要があります。テーブルの内容を適切にフォーマットして、.csv ファイルとして保存できるようにするコードがあります (たとえば、列の区切り記号はコンマで、テーブルの各レコードは新しい行にあります)。
したがって、コントローラーには次のコードがあります。
window.location.href = '/download?data=' + encodeURIComponent($scope.csvString);
サーバー部分にNodeJを使用しています。ここには、次のルート ハンドラがあります。
app.get('/download', function (req, res) {
var data = req.query.data;
res.attachment('data.csv');
res.setHeader('Content-Type', 'text/csv');
res.end(data);
});
これは完全に正常に機能します。ダウンロードは機能し、ダウンロードされたファイルのデータは完全な CSV 形式です。問題ない。
この問題は、テーブル内のレコードが多すぎる場合、つまりデータが巨大な場合に発生します。このため、クエリ パラメータは非常に大きく、制限を超えていると想定しているため、GET リクエストは 400 (Bad Request) エラーで返されます。私の分析によると、リクエストはサーバーに到達しないことに注意してください。 Chrome 開発者ツールを使用してリクエストが失敗したことを確認しました。ブラウザでは、URL は単純にwww.my_domain.com/download?data=the_lengthy_data
. それでおしまい。Web ページが空白または空で、ファイルがダウンロードされていません。
したがって、長いデータをダウンロードする方法を知りたいですか? 私が遭遇したすべての例は GET リクエストを行うため、長いデータをクエリ パラメータとして渡す必要があります。他のアプローチはありますか?