俺の雑記帳

My random memorandumです。(つまり、個人的な備忘録であり、その点ご容赦を。)

特定の拡張子のファイルへのリンクで、ブラウザでテキスト表示させずに、ダウンロードさせたい。

特定の拡張子(今回は、.stpや.step(3D CAD))のファイルへのリンクを、ブラウザ上でクリックすると、テキスト表示されてしまう。
そうではなく、ダウンロードをさせたい。

  1. 基本は、Apeche設定(基本は httpd.conf。.htaccessの場合も)MIME TYPE に追加する。httpd.confでは通常<IfModule mime_module>の中に書くが、これは.phpファイルの動作設定を書くところでもある。)
  2. IEには別の設定が必要(同じく、httpd.confか.htaccess(というか、1無くともこれのみでも可だろう。しかし1.も同時設定推奨のよう。)
  3. HTMLのaタグのdownload属性でも可能との事。

(上記3つは、下記の★印のリンク先で網羅。)

○『MIMEタイプ設定の意味と利用例 ServerKurabe』
https://serverkurabe.com/about-mimetype/
…基本が書かれている。ダウンロードのMIMEタイプの書き方も。(IEでは効かないことがある、とだけ書いてあり、代替方法記載なし)

○『MIMEタイプの追加(AddType) - コンテンツの設置 - Apache入門』
https://www.adminweb.jp/apache/docroot/index4.html
…ファイル"mime.types"について詳しい。<IfModule mime_module>の中でAddTypeすれば良い。ダウンロードの為の設定(application/octet-stream)については記載なし。

★『ファイルをダウンロードさせる方法 - naritoブログ』
https://torina.top/detail/228/
…当項冒頭に挙げた3つの方法を全て紹介(紹介順は逆)。
.htaccessよりhttp.confがパフォーマンス面やセキュリティ面で良いことも力説。
(2018/12/14)次のページにリダイレクトされるようになっている:『Djangoで、ファイルダウンロード - naritoブログ』https://narito.ninja/detail/93/

△『特定のMIMEタイプのファイルに対し、ダウンロードダイアログを開くには - Qiita』
https://qiita.com/kompiro/items/ac60721bc43625a057dc
…「mod_headersをインストールしなければならない」などと書かれている。しかし、仕事では、これは無かったようだが、設定は成功した。


俺の具体的設定:
httpd.confに、

・・・
<IfModule mime_module>
TypesConfig conf/mime.types
・・・
#20181120 added to let users download 3D-CAD files rather than open in browsers
AddType application/octet-stream .stp .step
・・・
</IfModule>

#20181120 added I added "AddType application/octet-stream .stp .step" above, but it doesn't work for IE. So, I added the following.
<Files ~ "\.(stp|step)$">
Header Add Content-Disposition attachment
</Files>
・・・