JavaScriptでファイルのMIMEタイプを取得する方法


  1. ファイル拡張子を使用する方法: ファイルの拡張子を取得し、その拡張子に基づいてMIMEタイプを判定する方法です。
function getMimeTypeByExtension(filename) {
  const extension = filename.split('.').pop().toLowerCase();
  switch (extension) {
    case 'txt':
      return 'text/plain';
    case 'jpg':
    case 'jpeg':
      return 'image/jpeg';
    case 'png':
      return 'image/png';
    // 他の拡張子に対するMIMEタイプの判定を追加することができます
    default:
      return 'application/octet-stream'; // デフォルトのMIMEタイプ
  }
}
const filename = 'example.jpg';
const mimeType = getMimeTypeByExtension(filename);
console.log(mimeType); // 結果: image/jpeg
  1. FileReaderオブジェクトを使用する方法: FileReaderオブジェクトを使用してファイルを読み込み、その結果からMIMEタイプを取得する方法です。
function getMimeTypeWithFileReader(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onloadend = function() {
      const arr = new Uint8Array(reader.result).subarray(0, 4);
      let header = '';
      for (let i = 0; i < arr.length; i++) {
        header += arr[i].toString(16);
      }
      let mimeType = '';
      switch (header) {
        case '89504e47':
          mimeType = 'image/png';
          break;
        case '47494638':
          mimeType = 'image/gif';
          break;
        case 'ffd8ffe0':
        case 'ffd8ffe1':
        case 'ffd8ffe2':
          mimeType = 'image/jpeg';
          break;
        case '25504446':
          mimeType = 'application/pdf';
          break;
        // 他のファイルタイプに対するMIMEタイプの判定を追加することができます
        default:
          mimeType = 'application/octet-stream'; // デフォルトのMIMEタイプ
      }
      resolve(mimeType);
    };
    reader.onerror = reject;
    reader.readAsArrayBuffer(file);
  });
}
const file = /* ファイルオブジェクト */;
getMimeTypeWithFileReader(file)
  .then(mimeType => {
    console.log(mimeType); // 結果を表示
  })
  .catch(error => {
    console.error(error); // エラーを処理
  });

これらの方法を使用することで、JavaScriptでファイルのMIMEタイプを取得することができます。適切な方法を選択して使用してください。