У меня есть 2 файла – 1.csv и 2.csv . Я могу скачать 1.csv с PHP по известному подходу:
$file = '1.csv'; header('Content-Description: File Transfer'); header('Content-Type: application/jpeg'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: public'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file);
Но моя цель – иметь в загруженном файле содержимое обоих файлов – 1.csv и 2.csv . Есть ли у кого-нибудь идеи, как это реализовать? Заранее спасибо.
Если я правильно вас понимаю, это должно сделать это.
$file1 = '1.csv'; $file2 = '2.csv'; header('Content-Description: File Transfer'); header('Content-Type: text/comma-separated-values'); header('Content-Disposition: attachment; filename='.basename($file1, '.csv') . '-' . basename($file2, '.csv') . '.csv'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: public'); header('Pragma: public'); header('Content-Length: ' . (filesize($file1) + filesize($file2))); ob_clean(); flush(); readfile($file1); readfile($file2);
Рассмотрите возможность использования цикла для нескольких файлов и обратите внимание на изменение заголовка Content-Type для файлов CSV.
$file1 = '1.csv'; $file2 = '2.csv'; header('Content-Description: File Transfer'); header('Content-Type: application/jpeg'); header('Content-Disposition: attachment; filename="1-2.csv"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: public'); header('Pragma: public'); header('Content-Length: ' . (filesize($file1)+filesize($file2))); ob_clean(); flush(); echo file_get_contents($file1).file_get_contents($file2);
Загружает конкатенацию содержимого 2-х файлов