[メモ] mp3ファイルを自サイトからストリーミング再生させずにダウンロードしてもらう方法

 

mp3などの音源ファイルを自分のサイトからダウンロード配信したい場合のメモです。

HTMLからサーバ上のmp3ファイルに直リンク したときの挙動

HTMLからサーバ上のmp3ファイルに直リンクすると、クリックしたときの挙動はユーザーのブラウザや環境によって異なる動作をします。

  • ストリーミング再生が始まる
  • 関連付けられたプログラムでファイルが開かれる
  • ダウンロードダイアログが開く

大抵のブラウザで右クリックのメニューからダウンロードできたりドラッグ&ドロップでダウンロードできたりするので直リンクでもmp3配布サイトは成立しますが、ユーザーにとっては何かと不便だと思います。

理想はストリーミング再生ボタンを試聴のために設置しつつ、更に別ボタンでダウンロードできるという形ではないでしょうか。

そして、そのダウンロードボタンは上記のように動作が安定しないものではなく「必ずダウンロードが始まる」動作でないといけません。
つまり、mp3直リンクで必ずダウンロードしてもらう必要があるわけです。
(mp3ファイルをzipにしておけばいいのですが、サイト管理者としてはストリーミング用のmp3とzipの両方を用意するのは面倒ですし、サーバの負担も心配です)

(2019年12月追記:MusMusは結局このzip併用方式を選びましたw)

実際の方法

調べてみると、mp3に直リンクする形でHTMLを書いても動作を強制的にダウンロードに固定する方法はいくつかありそうです。
その中でも.htaccessでMIMEタイプを変更するというのが最もお手軽かな、と感じました。

.htaccessの記述

ForceType application/octet-stream
Header set Content-Disposition attachment

参考: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など)ではファイルのダウンロードに強い制限があり動作しないものもあるようです。

弱点

あくまでMIMEタイプの設定なので、ブラウザがちゃんと判断してくれるのかというところが弱点になってきそうです。
ブラウザの中にはMIMEタイプと実際のファイルに齟齬がある場合、ヘッダなんかから勝手にファイル形式を判断して訂正してくれるといういらぬお節介親切なものもあるようで、こういった場合はダウンロードダイアログが開くとは限らないと思われます。

| カテゴリ:ウェブサイト作成

“[メモ] mp3ファイルを自サイトからストリーミング再生させずにダウンロードしてもらう方法” への4件のフィードバック

  1. 河野 より:

    スマートフォンで、ダウンロードのときに動作しない場合は、どうすればダウンロードできますか?

    • watson より:

      スマホ、というよりはブラウザによるように思います。
      例えばAndroid端末でモバイル版Chromeをお使いであればリンクを長押しでできそうです。
      参考)https://support.google.com/chrome/answer/2534515?hl=ja
      iPhoneに関してはサイトがスマホに対応しているという話以前の問題で、そもそも音楽ファイルのダウンロードは出来ないと思います。

  2. 河野 より:

    ストアってどこですか?
    Googleプレイストアですか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください