Memahami Pengenalpastian Jenis Kandungan dalam PHP
Apabila melampirkan fail pada e-mel, adalah penting untuk menentukan jenis kandungannya dengan tepat. PHP menyediakan pelbagai kaedah untuk mencapainya.
Fungsi untuk Menentukan Jenis Kandungan
Untuk menangani keperluan ini, penyelesaian yang disediakan menawarkan fungsi berikut:
function getFileMimeType($file) { // Attempt to use PHP finfo functions if (function_exists('finfo_file')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $type = finfo_file($finfo, $file); finfo_close($finfo); } // Fallback to mime_content_type alternative else { require_once 'upgradephp/ext/mime.php'; $type = mime_content_type($file); } // Further fallbacks if previous attempts failed if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) { // Use file command if available $secondOpinion = exec('file -b --mime-type ' . escapeshellarg($file), $foo, $returnCode); if ($returnCode === 0 && $secondOpinion) { $type = $secondOpinion; } } if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) { // Attempt to use exif_imagetype for images require_once 'upgradephp/ext/mime.php'; $exifImageType = exif_imagetype($file); if ($exifImageType !== false) { $type = image_type_to_mime_type($exifImageType); } } return $type; }
Penjelasan Fungsi
Fungsi ini cuba menggunakan PHP fungsi finfo untuk mengenal pasti jenis mime. Jika gagal, ia akan kembali kepada fungsi mime_content_type. Sekiranya kedua-dua ini tidak berfungsi, ia cuba untuk melaksanakan arahan 'fail' pada sistem *NIX. Akhir sekali, ia menggunakan exif_imagetype untuk menentukan jenis mime untuk imej.
Perlu diperhatikan bahawa pelayan yang berbeza mempunyai sokongan yang berbeza-beza untuk fungsi jenis mime, dan penggantian Upgrade.php mime_content_type mungkin tidak sentiasa boleh dipercayai. Walau bagaimanapun, fungsi exif_imagetype cenderung untuk melaksanakan secara konsisten merentas pelayan. Jika semata-mata berkenaan dengan fail imej, anda boleh mempertimbangkan untuk menggunakan fungsi ini sahaja untuk penentuan jenis mime.
Atas ialah kandungan terperinci Bagaimanakah anda menentukan `Content-Type` bagi fail dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!