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 - это результат моей базы данных, где я сохранял размер, тип, путь и т. д. при загрузке файла.
UPDATE
Когда я загружаю и скачиваю * .pdf файлы, это успешно работает. Но когда я пытаюсь загрузить * .zip и text / rtf, text / plain это ведет себя странно.
Под странным я имею в виду: он загружает полный файл index.php с содержимым загруженного файла внутри него.
ANSWER
Я скопировал это из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;