我尝试将数据从数据库导出到 .csv。当我单击导出链接时,如果数据量很大,我很长一段时间都看不到浏览器中的保存窗口。如果脚本看起来像挂了一段时间并且在很长一段时间后可以在浏览器中看到保存窗口,那可能会很混乱。代码在控制器中是这样的:
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$fileName = $list->list_name . '.csv';
$this->getResponse()->setHeader('Content-Type', 'text/csv; charset=utf-8')
->setHeader('Content-Disposition', 'attachment; filename="'. $fileName . '"');
$contacts = new Contact();
$contacts->export($listId);
导出方法一一读取记录并打印如下:
$fp = fopen('php://output', 'w');
foreach ($mongodbCursor as $subscriber) {
$row = formRow($subscriber);
fputcsv($fp, $row);
}
我在一些保存 winow 的应用程序上看到几乎立即出现,当您单击保存时,您会看到下载进度。
我试图替换:
$this->getResponse()->setHeader('Content-Type', 'text/csv; charset=utf-8')
->setHeader('Content-Disposition', 'attachment; filename="'. $fileName . '"');
有了这个:
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="'. $fileName . '"');
到目前为止它没有帮助。我想知道是否可以在从数据库中一一读取所有数据之前发送标头?感谢您的协助。