我有一个控制器动作,该动作使用League / csv包输出CSV文件。 当我发布表单时,可以下载文件,但是如果再次发布发布请求,我会得到csrf令牌失败,这是正确的,因为csrf代码在每次请求后都会过期。在Slim框架PHP中下载文件后重定向页面的最佳方法是什么
$csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject());
Data::where('user_id','=',$user_id)->get()->each(function($dat) use($csv) {
$data = $dat->toArray();
$data['link'] = $dat->getLink();
$csv->insertOne($data);
});
$csv->output('data.csv');
答案 0 :(得分:0)
问题已解决。我提出了ajax请求,该请求返回了csrf令牌和csv文件内容。 我使用下面的代码使用javascript下载文件
var uri = 'data:text/csv;charset=UTF-8,' + encodeURIComponent(csvdata);
window.open(uri, 'data.csv');