使用控制器下载Laravel Excel



所以我创建了一个PHP控制器来处理由JS发布的导出数据。问题是我可以看到它在控制台中创建了一些东西,但文件下载从未开始。我尝试使用->store (laravel excel)并将其保存在导出文件夹中,但当我再次尝试使用

return Response::download($result);

仍然无法开始下载。我遇到的问题只是开始下载

<<p> 角控制器/strong>
$scope.exportMatrix = function () {
    var postData = {list: $scope.list, matrix: $scope.matrix};
    $http({
        method: 'POST',
        url: '/export',
        dataType: 'obj',
        data: postData,
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function (data) {
        console.log(data);
    }).error(function (data) {
        console.log("failed");
    });
}

Route::post('/export', 'ExportController@export');
PHP控制器

<?php namespace AppHttpControllers;
use AppHttpRequests;
use AppHttpControllersController;
use IlluminateHttpRequest;
use App;
use Excel;
use Response;
class ExportController extends Controller {
public function export()
{
    $excel = App::make('excel');
    Excel::create('Test', function($excel) {
        $excel->setTitle('new awesome title');
        $excel->sheet('Sheet', function($sheet) {
            $sheet->fromArray(array(
                array('data1', 'data2'),
                array('data3', 'data4')
            ));
        });

    })->export('xlsx');
}

最后,我使用FileSaver.js来下载它发回的blob,所以只需加载FileSaver并使用它savea (blob)。

$http({
   method: 'POST',
   url: '/api/v1/download',
   dataType: 'json',
   data: {
       data:data
   },
   responseType: 'arraybuffer',
   headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (data) {
   var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
   saveAs(blob, title + ".xlsx");
}).error(function (data) {
   console.log("failed");
});

我确定用了

responseType: arraybuffer

和保存类型:

"应用程序/vnd.openxmlformats-officedocument.spreadsheetml.sheet "

因为原因。

路线::获得("/出口"、"ExportController@export");

最新更新