HTTP プロトコルの仕組みにより、サーバーからの応答のヘッダーの内容を使用して、応答本文の内容を処理する方法が決定されます。
そして、コンテンツをJPGデータとして扱うようにブラウザ(または応答を受信しているもの)に指示するヘッダーを追加しています。内容のすべて。それが起こることです。表示するデータと一部の HTML/テキストの両方を送信するわけではありません。ページまたは JPG コンテンツのいずれかが送信されます。
ダウンロードした画像ファイルの内容を見ると、末尾に「hello」が付いているはずです。
アップデート:
必要に応じて、メタ タグを使用して最初にメッセージを表示し、次にダウンロード 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) に頼る必要があります。そして、それは少しトリッキーです。