PHPを利用して画像をダウンロードさせるボタンを作成する方法メモです。
リンクボタンをクリックすると保存ダイアログが表示されて、ダウンロードが始まるボタンがありますよね。
そんなリンクボタンをPHPを使って作成する記述方法になります。
HTMLとPHPを用意する
HTML部分
HTMLでは画像への直リンクではなく、PHPファイルへのリンクとして記述します。
リンク文字列はもちろん自由に指定できますね。
<a href="/download.php">download</a>
PHP部分
download.php部分の記述方法です。
この場合は例としてルート内「image」フォルダにある「test.jpg」を呼び出す指定になっています。
//画像のパスとファイル名
$fpath = '/image/test.jpg';
$fname = 'test';
//画像のダウンロード
header('Content-Type: application/octet-stream');
header('Content-Length: '.filesize($fpath));
header('Content-disposition: attachment; filename="'.$fname.'"');
readfile($fpath);
「header(‘Content-Type: application/octet-stream’);」を指定することでダウンロードファイルとしての取扱いにしています。
もちろんですが、画像だけでなくzipファイルなどの他のファイルでも応用可能になっています。
「Content-disposition: attachment; filename=」を指定すればダウンロードする時に表示するファイル名を付けられます。
これがないと「download.php」というファイル名になってしまいます。
「Content-Length:」を指定すれば、ブラウザでダウンロードまでかかる進捗率のポップアップを出す事ができます。
大きなファイルの場合には指定してあげるとユーザーにも嬉しいですよね。
まとめ
ファイルへの直リンクではなく、ダウンロードさせるPHPにするメリットはもっとあって、例えば会員のみにダウンロードさせるサイト等にも応用できると思います。
ダウンロードファイルがPHPなので色々な処理を同時に行えます。
他にも日替わりでファイルが変わるリンク等もおもしろいですよね。今回は画像リンクをメインに書きましたが、基本的にどんなファイルでも可能なので活用してみてください!
今日も知識欲は止まらない。