- ファイル拡張子を使用する方法: ファイルの拡張子を取得し、その拡張子に基づいて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
- 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タイプを取得することができます。適切な方法を選択して使用してください。