拡張子からMIMEタイプを調べる

ダウンロードがapplication/octet-streamで返ったり、アップロードフォームにファイルを拒否されたり。正しいContent-Typeの値を早く見つける方法です。

このガイドで使う道具

やりたいこと

サーバーはimage/webpやapplication/pdfのようなMIMEタイプでファイル種別を表します。アップロードのaccept指定・Content-Typeヘッダの設定・汎用blobになるダウンロードの調査で必要になります。

調べ方

MIMEタイプ一覧を開き、拡張子またはキーワードを入力します。表にMIMEタイプ・代表的な拡張子・簡単な注記が出ます。検索が広すぎる場合はimage・audio・video・text・applicationの分類で絞ります。

  • 拡張子→タイプ: .webmで検索するとvideo/webmが返ります。
  • タイプ→拡張子: video/mp4で検索すると.mp4と.m4vが見えます。
  • 同じ拡張子でも系によって別タイプになることがあります。迷ったらファイルシグネチャ判定で実バイトを確認します。

具体例

iPhoneの.heic写真を受け付けるHTMLの<input accept=…>を作ります。heicで検索するとimage/heic(と兄弟のimage/heif)が出るので、accept="image/heic,image/heif"とすればiOSが実際に使う両方の表記をカバーできます。

対応範囲

一般的なタイプに絞った一覧で、IANAレジストリ全量ではなくファイル内容の判定もしません。同じ拡張子で中身が違うファイルもあり得ます。バイト自体が重要ならhexビューアやファイルシグネチャで確認してください。