PHP

リンククリックでファイルをダウンロードさせる

これは何?

単一ファイルをリンククリックするだけでダウンロードさせたいときに使います。
セキュリティ的な考慮により、外部パラメーターでファイル名組み立て、はやってません。

コード

<?php
// ファイルパス(ドメインルートからのフルパス)
$filepath = './wp-content/DEMO.pdf';
/**
  以下は特に変更する必要はありません
 */
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
header('Content-Length: '.filesize($filepath));

// out of memoryエラーが出る場合に出力バッファリングを無効
while (ob_get_level() > 0) {
    ob_end_clean();
}
ob_start();

// ファイル出力
if ($file = fopen($filepath, 'rb')) {
    while (!feof($file) and (connection_status() == 0)) {
        echo fread($file, '4096'); // 指定したバイト数ずつ出力
        ob_flush();
    }
    ob_flush();
    fclose($file);
}
ob_end_clean();
?>

デモ

元ファイル

http://www.musta.jp/wp-content/DEMO.pdf

ダウンロードリンク

※ いきなりダウンロードされますのでご注意ください
http://www.musta.jp/download.php