Разрешить загрузку с помощью 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
?>

Использовать ob_end_clean(); перед записью файла

Другие вопросы по тегам