画像リンクをクリックすると、すぐにダウンロード開始
複雑なプログラミングを使わずに、画像をクリックすると、画像が開くだけじゃなく、自動的に画像ダウンロードがスタートするようにしたい。
できます。
しかも簡単に。
.htaccessとURLクエリストリング(パラメータ)を使う
クエリストリング(クエリパラメータ)などと、小難しい名前がついているが、簡単に言うとURLの後ろについている「?xxx」というやつだ。
こういうヤツだ。
1. .htaccessに記述を追加する
.htaccess ファイルに以下の記述をコピペする。既に.htaccess がある場合は追記。
ない場合は、下のファイルを右クリックダウンロードして、FTPソフトでアップロードすればOK。
WordPress用も用意している。
site用の.htaccess
wordpress用の.htaccess
なお、ダウンロードした「site.htaccess.txt」などは、アップロード後に、「.htaccess」に名前を変えてくれ。
.htaccess 追記分:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^download
RewriteRule ^(.+)$ – [T=application/octet-stream]
全く同じでなくてもいい。例えば、
RewriteEngine on
RewriteCond %{QUERY_STRING} ^dl
RewriteRule ^(.+)$ – [T=application/octet-stream]
などでも大丈夫。上の例は downloadがクエリストリング。下の例ではdlがクエリストリング。
2. 画像リンクのパスの後に、クエリストリングを追加する
これで、普通の画像リンクだといつも通り画像が表示される。
そしてリンクの後に「?download」とつけておくと、リンクをクリックすると即座にダウンロードが開始される。
通常のリンク<a href=”/xxx/写真名.jpg”>画像表示はこちら</a>
ダウンロードリンク<a href=”/xxx/写真名.jpg?download”>ダウンロードはこちら</a>
クエリストリングにdownloadがついている時に、即座にダウンロードが開始されるわけだ。
解説
.htaccess の開設
RewriteCond %{QUERY_STRING} ^download
クエリストリングが「download」かどうかをチェックする。
RewriteRule ([^/]*)$
この記述は、全てのファイルパスやファイルの種類にマッチすることになる。つまり、全ての場所のいかなるファイルであっても、?download がついている場合に適用される。
–
このダッシュで、以下はURLやパス、ファイル名じゃないよという事を表している。
[T=application/octet-stream]
TはTypeの略。フラッグと呼ばれる。これでファイルタイプを変更しますよ。という事になる。
application/octet-stream これは、「任意のデータ」という意味になる。つまり、画像でもなく、文章でもなく、動画でもない、「何かしらのデータ」なので、ブラウザで開かれたり、Windowsメディアプレーヤーが立ち上がる事もなく、ダウンロードが開始される。
全体で、
クエリストリングに「?download」がついている場合は、いかなるファイルタイプであっても、それを任意のデータとして受け取るように、ルールを書き換えますよ。
という意味になる。
なのでダウンロードが開始されるわけだ。
ちなみにこれを使えば、画像でなくても「.html」ファイルや、動画ファイルであってもダウンロードさせることができる。
URLの後ろに「?download」のクエリストリングをつけるだけでOK。
番外 WordPressで使いたい!
なお、Wordpress(のテンプレートphpなどで)にこれを使いたい場合
<a href=”<?php thumbnails_url(); ?>?download” target=”_blank”><img src=”ダウンロードボタンの画像.jpg”></a>
と記述してやることで、任意のサムネイルをダウンロードさせることができる。