У меня есть этот код и по какой-то причине после этого принудительно загружает код файла, следующий код php не запускается ..
$file = "2.jpg";
header("Content-Type:application/force-download");
header("content-disposition:attachment; filename=".$file);
readfile("$file");
echo "hello"
echo "hello"
команда например не работает
Из-за того, как работает протокол HTTP, содержимое заголовка — в ответе от сервера — используется для определения того, как обрабатывать содержимое тела ответа.
И вы добавляете заголовки, которые сообщают браузеру (или тому, что получает ответ) обрабатывать содержимое как данные JPG. Все содержания. Так вот что происходит. Вы не отправляете и данные, и немного HTML / текста для показа. Либо страница или содержимое JPG отправляются.
Если вы посмотрите на содержимое загруженного файла изображения, в конце должно появиться «привет».
Обновить:
Если вы хотите, вы можете использовать метатег, чтобы сначала отобразить сообщение, а затем перенаправить на ваш URL для загрузки. 2 в примере — это количество секунд ожидания до того, как произойдет перенаправление.
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="2;URL='http://example.com/readfile.php'" />
<title>You will soon be downloading</title>
</head>
<body>
Hello
</body>
</html>
Это самый чистый способ. Если вы не хотите отображать сообщение до тех пор, пока не закончится загрузка файла, вы также можете сделать это, но тогда вам придется прибегнуть к Javascript (AFAIK). И это немного сложнее.
Других решений пока нет …