Разрешить загрузку с помощью fputcsv, но не указывать лишний HTML-код в выходном файле?
В моем коде я создаю файл с помощью fgetcsv. Я загружаю его и открываю файл, но все HTML-файлы с моей страницы включены в файл CSV. Есть ли в любом случае я могу просто получить данные, которые я хочу вывести из файла, а не лишний HTML. моя функция для создания CSV ниже
function makefile()
{
header('Content-type: text/csv');
header("Cache-Control: no-store, no-cache");
header("Content-Disposition: attachment;filename=file.csv");
$this->filepointer = fopen('php://output', 'a');
for($count=0;$count < count($this->alldata);$count++)
{
fputcsv($this->filepointer, $this->alldata[$count]);
}
fclose($this->filepointer);
}
Также мне было интересно, если я использую $this->filepointer = fopen('file.csv', 'w'), будет ли файл по-прежнему заполнен HTML. поскольку мне не нужно загружать файл, я просто использовал его, чтобы проверить, был ли файл создан в правильном формате. еще раз спасибо
2 ответа
Вы можете попробовать приведенный ниже код. Вам нужно добавить read_file в конце после установки заголовка, как показано ниже.
<?php
if(isset($_GET['link']))
{
$var_1 = $_GET['link'];
$file = $var_1;
if (file_exists($file))
{
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
} //- the missing closing brace
?>