我在尝试导出数据和下载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 框架 2。
我认为这可能与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;