2 回答

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個贊
將 CSV 文件發(fā)送到瀏覽器
$output = ...
header('Content-Type: text/csv');
echo $output;
exit;
瀏覽器傾向于打開 CSV、PDF 等文件。要保存文件而不是打開文件,請?zhí)砑?HTTP header Content-Disposition。對于較大幾個字節(jié)的文件,Content-Length也可以使用。
強(qiáng)制瀏覽器下載文件。
$output = ...
$filename = "output.csv";
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header("Content-Length: " . strlen($output));
echo $output;
exit;
發(fā)送靜態(tài)文件到瀏覽器
您的 Web 服務(wù)器(Apache、Nginx 等)應(yīng)該處理靜態(tài)文件,但如果您出于安全或其他原因需要通過 PHP 運(yùn)行它......
$file = './files/myfile.csv';
header('Content-Type: text/csv');
readfile($file);
exit;
強(qiáng)制瀏覽器下載靜態(tài)文件。
$file = './files/myfile.csv';
$filename = basename($file); // or specify directly, like 'output.csv'
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header("Content-Length: " . filesize($file));
readfile($file);
exit;

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個贊
這使用老派fopen, fputcsv, 和fclose, 而不是file_put_contents,但總是對我有用......
function csv_from_array($fileName, $data, $header_included = FALSE){
// Downloads file - no return
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename={$fileName}");
header("Expires: 0");
header("Pragma: public");
$fh = @fopen( 'php://output', 'w' );
foreach($data as $line) {
// Add a header row if not included
if (!$header_included) {
// Use the keys as titles
fputcsv($fh, array_keys($line));
}
fputcsv($fh, $line);
}
fclose($fh);
exit;
}
您是否因某種原因需要使用?file_put_contents
如果文件已經(jīng)存在/不需要從 php 數(shù)組創(chuàng)建,您可以修改如下:
function download_csv($fileName){
// Downloads file - no return
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename={$fileName}");
header("Expires: 0");
header("Pragma: public");
exit;
}
- 2 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報