PHP - простой скрипт загрузки

Я делаю простой сценарий загрузки, где мои пользователи могут загружать свои собственные изображения и т. д.

Но я'У меня какая-то странная проблема.

Когда я'я скачал файлсодержимое моего файла index.php независимо от того, какой тип файла у меняЯ скачал .. Мой код выглядит так:

$fullPath = $r['snptFilepath'] . $r['snptFilename'];

if (file_exists($fullPath)) {

    #echo $fullPath;

    // setting headers
    header('Content-Description: File Transfer');
    header('Cache-Control: public'); # needed for IE
    header('Content-Type: '.$r['snptFiletype'].'');
    header('Content-Disposition: attachment; filename='. $filename . '.' . $r['snptExtension']);
    header('Content-Length: '.$r['snptSize'].'');
    readfile($fullPath)or die('error!');
} else {
    die('File does not exist');
}

$ r - это результат моей базы данных, где ясохраненный размер, тип, путь и т. д. при загрузке файла.

ОБНОВИТЬ

Когда я'm загрузка и загрузка * .pdf файлов it 'работает с успехом. Но когда яя пытаюсь скачать * .zip и text / rtf, text / plain it 'ведет себя странно.

Под странным я имею в виду: он загружает полный файл index.php с содержимым загруженного файла внутри него.

ОТВЕТ

Я скопировал это изhttp://php.net/manual/en/function.readfile.php и это'сейчас работает. Кажется, что: ob_clean (); сделал трюк! Спасибо всем за помощь.

#setting headers
    header('Content-Description: File Transfer');
    header('Content-Type: '.$type);
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;

Ответы на вопрос(2)

Ваш ответ на вопрос