php 下载.csv,php 文件流的形式下载csv
使用文件流下載csv原因
使用php 下載excel 經常會因為文件太大 導致內存不足 下載失敗
直接上代碼
$columns = [
'u_id',
'用戶姓名'
];
$items=[["u_id"=>1,"用戶姓名"=>"x1"],["u_id"=>2,"用戶姓名"=>"x2"]];
//定義文件名稱
$csvFileName = date("Ymd").'hero.csv';
//設置好告訴瀏覽器要下載excel文件的headers
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'. $csvFileName .'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$fp = fopen('php://output', 'a');//打開output流
mb_convert_variables('UTF-8', 'UTF-8', $columns);
fputcsv($fp, $columns);//將數據格式化為CSV格式并寫入到output流中
$accessNum =count($items);
$perSize=1000; //設置每次下載數量
$pages = ceil($accessNum / $perSize);
for($i = 0; $i < $pages; $i++) {
$rowDatas = array_slice($items,$i*$perSize,1000);
foreach ($rowDatas as $rowData){
mb_convert_variables('UTF-8', 'UTF-8', $rowData);//utf-8入 utf-8出
fputcsv($fp, $rowData);
}
unset($accessLog);//釋放變量的內存
//刷新輸出緩沖到瀏覽器
ob_flush();
flush();//必須同時使用 ob_flush() 和flush() 函數來刷新輸出緩沖。
}
fclose($fp);
總結
以上是生活随笔為你收集整理的php 下载.csv,php 文件流的形式下载csv的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java lang报错_java.lan
- 下一篇: php判断目录是否有写的权限,php中判