phalcon — скачать CSV-файл с переполнением стека

У меня есть файл CSV с кодом:

// put data to file
$file = 'file.csv';
$fp = fopen($file, 'w');
foreach ($excel as $fields) {
fputcsv($fp, $fields);
}

// скачать файл при нажатии кнопки:

if ($this->request->getPost('cvs')) { {
if (file_exists($file)) {
header('Content-Type:  text/csv');
header('Content-Disposition: attachment; filename=' . ($file));
header('Pragma: no-cache');
readfile('/var/www/admin/backend/public/' . $file);
// OR readfile($file);
}
}

Данные в file.csv (file.csv в папке publuc):

[Time,A1,A7,A30
03/24/2015,42531,130912,315805
03/25/2015,41124,132746,319098
03/26/2015,41050,134858,320934
03/27/2015,38687,134679,321747]

Но когда я нажимаю кнопку, чтобы загрузить файл, данные в файле загружаются все html страницы:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">
<html xmlns=""http://www.w3.org/1999/xhtml"">...etc..

Как это исправить? Спасибо большое!

0

Решение

немного поздно, но я думаю, что все пропустили тег phalcon. чего не хватает, так это

$this->view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_NO_RENDER);
2

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

Вот мой способ справиться с этим.

$this->response->resetHeaders();
$this->response->setHeader('Content-Type', 'application/csv');
$this->response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
$this->response->setContent($content);
return $this->response;

$ content — для меня это строка из массива, но вы также можете использовать file_get_contents ()

2

Мне нужно больше информации, чтобы ответить с уверенностью, но похоже, что браузер просто настроен для сохранения этого типа загрузки в виде HTML. Попробуйте использовать другой браузер или даже лучше использовать FTP-клиент, чтобы получить файл, чтобы браузер не являлся фактором.

Если вы хотите продолжить использовать браузер, попробуйте сделать следующее, а не просто щелкнуть ссылку:

Наведите курсор на ссылку и затем щелкните правой кнопкой мыши. Если у вас есть опция «сохранить как», сохраните файл в формате .csv. Он может автоматически выбрать .csv для вас, если вы выберете сохранить как.

0

использовать контент / тип как,

header('Content-Type: application/csv');

вместо header('Content-Type: text/csv');

0
You can also use the below two lines

header("Content-type: text/x-csv");
header("Content-type: application/csv");

If you want to set any particular file name to the download file then you can add

header("Content-Disposition: attachment; filename=dates_for_".date('dMy').".csv");
0
По вопросам рекламы [email protected]