例えば、ブラウザで jpeg ファイルを表示させるのでなく、ダウンロードさせたい場合、
HTTPヘッダー「Content-Disposition: attachment」を送出します。
<Content-Disposition> ヘッダーフィールドを使用することによって、メッセージの内容を添付ファイル(Attachment)として表示するか、インライン(Inline)データとして表示するかを提唱します。
inline は、メッセージ(全体)を表示するときに、この内容も即座に表示すべきであることを意味します。inline は、Multipart メッセージに登場するのと同じ順番で表示するべきです。
attachment は、メールメッセージの本文から離された 「付属物」(”Attachment”)であることを指定します。attachment は、ユーザーに何かのアクションを起こさせてから表示するべきあり、メッセージ(全体)を表示するときに、即座に内容を展開して表示するべきではありません。
上記は、IBMの「RFC 1806: Content-Disposition ヘッダーについて(概要)」から引用。
<?php $fpath = '/path/to/sample.jpg'; // ファイルパス $fname = 'sample.jpg'; // ファイル名 header('Content-Type: image/jpeg'); header('Content-Length: '.filesize($fpath)); header('Content-Disposition: attachment; filename="'.$fname.'"'); echo file_get_contents($fpath); exit; ?>