下载CSV按钮

时间:2018-02-14 14:31:26

标签: php angularjs csv

我有一个用户列表,我想将其导出为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
));

0 个答案:

没有答案