「クエリストリング」タグアーカイブ

【画像ダウンロードボタン作成方法】を画像リンクをクリックすると、すぐにダウンロード開始させる方法。

画像リンクをクリックすると、すぐにダウンロード開始

複雑なプログラミングを使わずに、画像をクリックすると、画像が開くだけじゃなく、自動的に画像ダウンロードがスタートするようにしたい。

できます。
しかも簡単に。

 

サンプルサイト「Web素材.net」

.htaccessとURLクエリストリング(パラメータ)を使う

クエリストリング(クエリパラメータ)などと、小難しい名前がついているが、簡単に言うとURLの後ろについている「?xxx」というやつだ。
querystring
こういうヤツだ。

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>
と記述してやることで、任意のサムネイルをダウンロードさせることができる。