Экспорт данных с использованием fputcsv не загружается

Я сталкиваюсь с очень странной проблемой при попытке экспортировать данные и загрузить CSV.

Проблема в том, что когда я набрал около 30 строк, браузер решает отобразить данные, а не загружать их в документ. Сначала я думал, что это были данные, но во время устранения неполадок я проверял, импортируя тот же документ.

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

Это не большой файл, но можно ли установить какой-либо размер или ограничение на количество символов? Я попытался устранить неполадки несколькими способами, но не совсем уверен, куда идти, так как он работает до определенного предела.

    $group = "";
ob_start();
$group = fopen('php://output', 'w');
fputcsv($group, array_keys(rest($groups[0])));
foreach ($groups as $result) {
fputcsv($group, $result);
}
fclose($group);
return ob_get_clean();

$response = $this->getResponse();
$headers = $response->getHeaders();
$headers->addHeaderLine('Content-Type', 'application/download');
$headers->addHeaderLine('Content-Type', 'text/csv');
$headers->addHeaderLine('Content-Disposition', "attachment; filename=\"my_filen.csv\"");
$headers->addHeaderLine('Accept-Ranges', 'bytes');
$headers->addHeaderLine('Content-Length', strlen((string)$group));

return $response;

Если это поможет, я использую Zend Framework 2.

0

Решение

Я думаю, что это может быть связано с настройками сброса в кодировке php.ini или gzip.

Вместо этого вы можете записать его в текстовый файл, а затем принудительно загрузить этот файл.

<?php
$handle = fopen("somefile.txt", "w");
fwrite($handle, "your content here");
fclose($handle);

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename('somefile.txt'));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize('somefile.txt'));
readfile('somefile.txt');
exit;
?>

Или, если вы можете использовать его на своем сервере:

$content = file_get_contents ($filename);
header ('Content-Type: application/octet-stream');
echo $content;
0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector