我有一个用户列表,我想将其导出为CSV文件。我将按钮绑定到Angular控制器。
HTML
<a class="btn btn-secondary-icon" href="" ng-click="csv()">Download CSV</a>
JS
$scope.csv = function() {
$scope.export.cols = _.keys(_.pick($scope.data.columns, function(col) {
return parseInt(col.checked) === 1;
}));
$http({
url: $scope.dataUrl,
data: $.param({
export: 1,
csv: $scope.export
}),
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).success(function(data) {
$rootScope.$broadcast('ErrorOnResponse', data);
if (data.csv) {
Download.download(
'yarooms-report-' + moment().format('YYYY-MM-DD') + '.csv',
'application/csv',
data.csv
);
Analytics.log(Analytics.event.EXPORT, Analytics.category.REPORTING);
}
});
};
在编写从我的数据库中获取数据的PHP函数时,会出现问题。我甚至试图导出一个简单的硬编码阵列,但它不会起作用。当我点击按钮时,它向服务器发出请求,但是全部,没有下载的文件,没有。
我测试PHP函数:
$file = 'php://memory'
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$f = fopen($file, 'rw+');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
rewind($f);
$csv = stream_get_contents($f);
fclose($f);
Support_Model_Entity::logStat('Exported users CSV');
$this->jsonResponse(array(
'csv' => $csv
));