[メモ] mp3ファイルをホームページからストリーミングさせずにダウンロードしてもらう方法
mp3などの音源ファイルを自分のサイトからダウンロード配信したい場合のメモです。
HTMLからサーバ上のmp3ファイルに直リンクすると、クリックしたときの挙動はユーザーの環境によって異なる動作をします。
- ストリーミング再生が始まる
- 関連付けられたプログラムでファイルが開かれる
- ダウンロードダイアログが開く
windowsでは右クリックのメニューからダウンロードしたり、macでもドラッグ&ドロップでダウンロードできるようなので、直リンクでもmp3配布サイトは成立しますが、ユーザーにとっては何かと不便だと思います。
理想はストリーミング再生ボタンを試聴のために設置しつつ、更に別ボタンでダウンロードできるという形ではないでしょうか。
そして、そのダウンロードボタンは上記のように動作が安定しないものではなく「必ずダウンロードが始まる」動作でないといけません。
つまり、mp3直リンクで必ずダウンロードしてもらう必要があるわけです。
(mp3ファイルをzipにしておけばいいのですが、サイト管理者としてはストリーミング用のmp3とzipの両方を用意するのは面倒ですし、サーバの負担も心配です)
調べてみるとmp3に直リンクする形でHTMLを書いても強制的にダウンロードにする方法はいくつかありそうです。
その中でも.htaccessでMIMEタイプを変更するというのが最もお手軽かな、と感じました。
.htaccessの記述
参考:http://blog.livedoor.jp/kumagai_nori/archives/52221265.html
apatchではmp3のMIMEタイプは
「audio/x-mp3 .mp3」
が通常のようですが、これを
「application/octet-stream」
としています。
この「application/octet-stream」というのは、「どのソフトで開けば良いかわからない謎のバイナリファイル」という意味。
mp3ファイルに対してこんな指定をして副作用がないのか心配ですが、実際にやってみるとばっちりストリーミング回避&ダウンロードできるようになります。
サイトのルートに設定したところ、mp3ファイルをサブフォルダに置いておいてもきちんと動作しました。
スマートフォン
スマホでも動作します。
ですが、appleのデバイス(iPhoneやiPadなど)ではファイルのダウンロードに強い制限があり動作しないようです。
apple製品は、ファイルのダウンロードはアプリ経由で行うというのが大原則となっているようです。
弱点
弱点はあくまでMIMEタイプの設定なので、ブラウザがちゃんと判断してくれるのか、というところです。
ブラウザの中にはMIMEタイプと実際のファイルに齟齬がある場合、ヘッダなんかから勝手にファイル形式を判断して訂正してくれるといういらぬお節介親切なものもあるようで、こういった場合はダウンロードダイアログが開くとは限らないと思われます。
スマートフォンで、ダウンロードのときに動作しない場合は、どうすればダウンロードできますか?
スマホ、というよりはブラウザによるように思います。
例えばAndroid端末でモバイル版Chromeをお使いであればリンクを長押しでできそうです。
参考)https://support.google.com/chrome/answer/2534515?hl=ja
iPhoneに関してはサイトがスマホに対応しているという話以前の問題で、そもそも音楽ファイルのダウンロードは出来ないと思います。
ストアってどこですか?
Googleプレイストアですか?
そのくだりはApple製品についてのお話しですので、GoogleプレイストアではなくAppleストアですね。