Загрузите CSV с сервера в браузер в Laravel 4

Я использую Laravel 4 Framework, у меня есть функция, которая создает CSV-файл с именем data_78888.csv, номер 78888 меняется каждый раз, когда функция запускается для создания CSV-файла. Эта функция возвращает строку, подобную этой: «Download / 78888»

Папка, в которой создаются мои csv-файлы, называется «выходные данные» и находится в папке моего проекта, в которой находится папка приложения (ее нет в общей папке).

То, что я хотел бы сделать, это создать маршрут, который указывает на мой контроллер процесса следующим образом:

Route::get('Download/{token}', array('uses' => 'ProcessController@downloadCSV'));

В моем контроллере я хотел бы отправить этот CSV-файл в браузер, чтобы загрузить его, я делаю так:

<?php

class ProcessController extends BaseController {

public function downloadCSV($token){
$fileToDownload = "data_".$token.".csv";
$filePath = "outputs/";
return Response::download($filePath, $fileToDownload, array(
'Content-Type'              => 'text/csv',
'Content-Disposition'       => 'attachment;filename="'.$fileToDownload

));
}
}

Проблема в том, что это не работает, и я получаю HTML-файл с именем 78888.htm и ошибку на сервере.

Как я могу заставить это работать, пожалуйста?

0

Решение

Путь к файлу должен включать имя и расширение файла.

Так что попробуйте это;

$fileToDownload = "data_".$token.".csv";
$filePath = base_path() . "outputs/" . $fileToDownload;
return Response::download($filePath, $fileToDownload, array(
'Content-Type'              => 'text/csv',
'Content-Disposition'       => 'attachment;filename="'.$fileToDownload

));

Также убедитесь, что файл существует, перед загрузкой.

0

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

Других решений пока нет …

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