2016-02-21 2 views
0

Я использую Laravel 4 & dingo 0.8.3 пытается использовать динамически созданный файл экспорта в качестве загрузки в ответ на защищенный маршрут, и я получаю ошибку изнутри Дингоошибка при попытке загрузить Dingo-защищенную загрузку из Laravel 4

Я знаю, что L4 устарело, но этот проект был начат более года назад и < 2 месяца от поставки

есть ли обходной путь, который я могу использовать, чтобы это было сделано?

Файл содержит динамически создаваемые JSon

(в routes.php)

Route::group([ 'protected' => true ], function(){ 
    Route::resource('bundle', 'Bundle'); 
    Route::get('bundle/download/{id}', '[email protected]'); 

(в Bundle.php)

$contents = $this->createBookletExport($id); 
$nameForFile = $contents->exportName .'.intbnd'; 
$pathToFile = "/tmp/".$nameForFile; 
File::put($pathToFile, json_encode($contents)); 
return Response::download($pathToFile,$nameForFile); 

(в laravel.log)

[2016-02-21 13:57:24] local.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to undefined method Symfony\Component\HttpFoundation\BinaryFileResponse::getFormatter()' in [...]/vendor/dingo/api/src/Routing/Router.php:220 

(от dingo/composer .json)

"require-dev": { 
    "tymon/jwt-auth": "0.4.*", 
}, 
"extra": { 
    "branch-alias": { 
     "dev-master": "0.8-dev" 
    } 
} 

ответ

0

Я установил это - ответ был НЕ использовать Response :: скачать, но использовать Response :: сделать и добавить некоторые заголовки (я попытался заголовки с ответом :: скачать на нет Свободна)

Так что:

$contents = $this->createBookletExport($id); 
$nameForFile = $contents->exportName .'.intbnd'; 
$pathToFile = "/tmp/".$nameForFile; 
File::put($pathToFile, json_encode($contents)); 
return Response::download($pathToFile,$nameForFile); 

стала это:

$contents = $this->createBookletExport($id); 
$nameForFile = $contents->exportName .'.intbnd'; 
$headers = array('Content-Type' => 'application/octet-stream', 'Content-Disposition' => 'attachment; filename='.$nameForFile); 
return Response::make(json_encode($contents),200,$headers); 

и Динго! Дядя Боба!

:)

Смежные вопросы