我正在尝试下载在流中创建的文件,而不必将其写入磁盘。这是我的工作:
$response = new StreamedResponse(function() use ($csv_data) {
// Open output stream
$handle = fopen('php://output', 'w');
foreach ($csv_data as $row) {
fputcsv($handle, $row);
}
fclose($handle);
}, 200, [
'Content-Type' => 'text/csv',
'Content-Disposition' => 'attachment; filename="legend.csv"',
]);
return $response;
我根据文档使用StreamedResponse,但是它返回的是我的csvfile值的字符串(“ value1”,“ value2”,...),而不是csvfile本身。
此方法由有角度的应用程序调用。
我做错了什么?
编辑:
我尝试用表格制作:
var form = angular.element('<form></form>');
form.attr('action', 'http://myUrl/export-csv');
form.attr('method', 'POST');
var input = angular.element('<input></input>');
input.attr('type', 'hidden');
input.attr('name', 'data');
input.attr('value', finalData);
form.append(input);
angular.element(document).find('body').append(form);
form.submit().remove();
这也许可行,但是我有一些奇怪的事情,首先是表单重定向到URL,而不是向它发出发布请求,当他重定向时,我有一个ERR_INVALID_RESPONSE(但是URL存在并且数据很好=>我用邮递员测试,就可以了