[英]Prevent CSV file downloading (CodeIgnitor)
我需要創建 csv 然后將其作為附件發送到郵件。 我正在使用標頭,這讓我下載了 csv 文件。 如果我刪除下面的內容,則不會創建 CSV。
header('Content-Type: text/csv');
我不想下載該文件,而是將其保存在某個臨時文件夾中,然后將其作為郵件附件發送。
下面是我所做的..
$this->load->library('excel');
$filename = tempnam(sys_get_temp_dir(), 'export') . '.csv';
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename="'.$filename.'"');
//$f = fopen('php://output', 'w');
$f = fopen($filename, 'w');
$csv_header = array("name","number","address");
fputcsv($f, $csv_header);
ob_flush();
flush();
foreach ($data as $value) {
$data_array = array($value['name'],$value['number'],$value['address']);
fputcsv($f, $data_array);
}
}
fclose($f);
解決方案
刪除這些 header 行,因為它們用於將文件下載到瀏覽器。
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename="'.$filename.'"');
在服務器端,你應該只用
$this->load->library('excel');
$temporary_filename = tempnam(sys_get_temp_dir(), 'export') . '.csv';
$file_write_stream = fopen($temporary_filename, 'w');
$csv_header = array("name","number","address");
fputcsv($file_write_stream, $csv_header);
foreach ($data as $value) {
fputcsv($file_write_stream, array($value['name'], $value['number'], $value['address']));
}
fclose($file_write_stream);
專業提示:
$mail->addAttachment($temporary_filename);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.