PHPで画像ダウンロードのボタンでリンクする方法


PHPを利用して画像をダウンロードさせるボタンを作成する方法メモです。
リンクボタンをクリックすると保存ダイアログが表示されて、ダウンロードが始まるボタンがありますよね。
そんなリンクボタンをPHPを使って作成する記述方法になります。

SPONSORED LINK

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なので色々な処理を同時に行えます。
他にも日替わりでファイルが変わるリンク等もおもしろいですよね。今回は画像リンクをメインに書きましたが、基本的にどんなファイルでも可能なので活用してみてください!

今日も知識欲は止まらない。

関連トピック

mysql_limit_pf

MySQLのlimitで大量データのパフォーマンスが遅い重い!

MySQLのlimitを使用した場合、オフセット部分が増えるとパフォーマンスが低下する場合の対処方法メモ。 データベースからlimit

Mail

PHPエラー対処方法「malformed header from script. Bad header=No recipient addresses found i」

PHPからメールを送信する際に「malformed header from script. Bad header=No recipien

Facebook

FacebookのRSSを取得する方法@Facobook API JSON対応

FacebookのRSSを取得する方法メモです。Facebookでは大規模な仕様変更が何度も行われて、古い情報ではRSSの取得ができない

Yesterday

PHPのdate関数で日付「昨日・明日・1時間前」を取得しよう!

PHPのdate関数を使えば自分の取得したい日付を1行でズバッと指定できます。 もう簡単すぎて、プログラムというよりは言葉で伝えてあげ

Post

PHPでPingを送信する方法を関数化する

PHPを使ってサイトの更新情報などをPINGサーバーに送信する方法とその関数化です。 PINGの仕組みは、サイトの情報を記載したXML

mysql

MySQL カラム名・テーブル名などに使ってはいけないキーワード

MySQLでテーブル名やカラム名に使用できないワードの一覧まとめ 予約語を使うのは危険なので回避しましょう。 バッククオートで囲って

xml_error

PHPエラー対処方法「simplexml_load_file」&「simplexml_load_string」

PHP simplexml_load_fileを使用して「I/O warning : failed to load external e

Way

JavaScriptでUA判別してスマホとタブレットを振り分ける方法

JavaScriptを使用してUAでiPhoneやAndroidのスマホを判定したり、増加傾向にあるタブレットを判別する方法メモ。 U

公開日:2013/01/10