Kotchasan Framework Documentation

Kotchasan Framework Documentation

Mime

TH 05 Feb 2026 07:53

Mime

\Kotchasan\Mime สำหรับจัดการ MIME types ของไฟล์ตาม extension

การใช้งาน

use Kotchasan\Mime;

// ดึง MIME type จาก extension เดี่ยว
$mime = Mime::get('pdf');  // 'application/pdf'

// ดึง MIME types จากหลาย extensions
$mimes = Mime::get(['jpg', 'png', 'gif']);
// ['jpg' => 'image/jpeg', 'png' => 'image/png', 'gif' => 'image/gif']

// ตรวจสอบ MIME type
$isValid = Mime::check(['jpg', 'png'], 'image/jpeg');  // true

// สร้าง accept string สำหรับ input file
$accept = Mime::getAccept(['jpg', 'png', 'gif']);
// 'image/jpeg,image/png,image/gif'

Methods

get()

ดึง MIME type จาก file extension

// Extension เดี่ยว
Mime::get('pdf');   // 'application/pdf'
Mime::get('jpg');   // 'image/jpeg'
Mime::get('mp4');   // 'video/mp4'
Mime::get('xlsx');  // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

// Extension ไม่รู้จัก
Mime::get('unknown');  // null

// หลาย extensions
Mime::get(['jpg', 'png', 'gif']);
// ['jpg' => 'image/jpeg', 'png' => 'image/png', 'gif' => 'image/gif']

Parameters:

  • $exts (string|array): File extension หรือ array of extensions

Returns:

  • string: MIME type (ถ้าส่ง string extension)
  • array: Array of extension => MIME type (ถ้าส่ง array)
  • null: ถ้าไม่พบ extension

check()

ตรวจสอบว่า MIME type ตรงกับ extensions ที่กำหนดหรือไม่

// ตรวจสอบว่า MIME type เป็น image ที่อนุญาต
$isAllowed = Mime::check(['jpg', 'png', 'gif'], 'image/jpeg');  // true
$isAllowed = Mime::check(['jpg', 'png'], 'application/pdf');    // false

// ใช้กับ file upload validation
$allowedTypes = ['jpg', 'png', 'gif'];
$uploadedMime = $_FILES['image']['type'];

if (!Mime::check($allowedTypes, $uploadedMime)) {
    throw new Exception('Invalid file type');
}

Parameters:

  • $typies (array): Array ของ file extensions ที่อนุญาต
  • $mime (string): MIME type ที่ต้องการตรวจสอบ

Returns:

  • bool: true ถ้า MIME type ตรงกับ extension ใดใน array, false ถ้าไม่ตรง

getAccept()

สร้าง accept string สำหรับ HTML input type="file"

$accept = Mime::getAccept(['jpg', 'png', 'gif']);
// 'image/jpeg,image/png,image/gif'

// ใช้กับ HTML form
echo '<input type="file" accept="' . Mime::getAccept(['jpg', 'png']) . '">';
// <input type="file" accept="image/jpeg,image/png">

Parameters:

  • $typies (array): Array ของ file extensions

Returns:

  • string: Comma-separated MIME types

รายการ MIME Types ที่รองรับ

Class นี้รองรับ 900+ file extensions รวมถึง:

Images

Extension MIME Type
jpg, jpeg image/jpeg
png image/png
gif image/gif
webp image/webp
svg image/svg+xml
ico image/x-icon
bmp image/bmp
tiff image/tiff

Documents

Extension MIME Type
pdf application/pdf
doc application/msword
docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
xls application/vnd.ms-excel
xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
ppt application/vnd.ms-powerpoint
pptx application/vnd.openxmlformats-officedocument.presentationml.presentation

Videos

Extension MIME Type
mp4 video/mp4
webm video/webm
avi video/x-msvideo
mov video/quicktime
flv video/x-flv

Audio

Extension MIME Type
mp3 audio/mpeg
wav audio/wav
ogg audio/ogg
m4a audio/mp4

Archives

Extension MIME Type
zip application/zip
rar application/x-rar-compressed
7z application/x-7z-compressed
tar application/x-tar
gz application/gzip

ตัวอย่างการใช้งาน

File Upload Validation

use Kotchasan\Mime;

$allowedTypes = ['jpg', 'jpeg', 'png', 'gif'];
$file = $_FILES['avatar'];

// ตรวจสอบ MIME type
if (!Mime::check($allowedTypes, $file['type'])) {
    die('Invalid file type. Only images allowed.');
}

// ดำเนินการ upload
uploadFile($file);

HTML File Input with Accept

use Kotchasan\Mime;
use Kotchasan\Html;

$form = Html::form();

// สร้าง file input สำหรับรูปภาพ
$imageAccept = Mime::getAccept(['jpg', 'jpeg', 'png', 'gif', 'webp']);
$form->add('file', [
    'id' => 'avatar',
    'accept' => $imageAccept,
    'label' => 'Upload Avatar'
]);

// สร้าง file input สำหรับเอกสาร
$docAccept = Mime::getAccept(['pdf', 'doc', 'docx', 'xls', 'xlsx']);
$form->add('file', [
    'id' => 'document',
    'accept' => $docAccept,
    'label' => 'Upload Document'
]);

Set Content-Type Header

use Kotchasan\Mime;

$filename = 'report.pdf';
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$mime = Mime::get($ext);

if ($mime) {
    header('Content-Type: ' . $mime);
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    readfile($filepath);
}

Dynamic File Type Detection

use Kotchasan\Mime;

function getFileType($filename) {
    $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
    $mime = Mime::get($ext);

    if (!$mime) {
        return 'unknown';
    }

    if (strpos($mime, 'image/') === 0) {
        return 'image';
    } elseif (strpos($mime, 'video/') === 0) {
        return 'video';
    } elseif (strpos($mime, 'audio/') === 0) {
        return 'audio';
    } elseif (in_array($ext, ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'])) {
        return 'document';
    } else {
        return 'file';
    }
}

echo getFileType('photo.jpg');     // 'image'
echo getFileType('video.mp4');     // 'video'
echo getFileType('report.pdf');    // 'document'

คลาสที่เกี่ยวข้อง

  • File - File operations
  • Image - Image processing
  • Upload - File upload handling