Laravel Excel Скачать с помощью контроллера

Поэтому я создал контроллер PHP для обработки данных экспорта, которые публикуются JS. Проблема в том, что я вижу, что это создает что-то в консоли, но загрузка файла никогда не начинается. Я попытался использовать -> store (laravel excel) и сохранить его в папке экспорта, но снова, когда я пытаюсь использовать

return \Response::download($result);

это все еще не начнет загрузку. Проблема у меня просто начать загрузку.

Угловой контроллер

$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 App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
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');
}

2

Решение

В конце концов я использовал FileSaver.js чтобы загрузить блоб, который он отправил обратно, просто загрузите FileSaver и используйте его saveAs (блоб).

$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»

Потому что причины.

1

Другие решения

Route :: get (‘/ export’, ‘ExportController @ export’);

-3

По вопросам рекламы [email protected]