了解 PHP 中的内容类型识别
将文件附加到电子邮件时,准确确定其内容类型至关重要。 PHP 提供了各种方法来实现此目的。
用于确定内容类型的函数
为了满足此需求,所提供的解决方案提供了以下函数:
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; }
函数说明
此函数尝试利用 PHP 的 finfo 函数来识别 mime 类型。如果失败,它将回退到 mime_content_type 函数。如果这些都不起作用,它会尝试在 *NIX 系统上执行“file”命令。最后,它使用 exif_imagetype 来确定图像的 mime 类型。
值得注意的是,不同的服务器对 mime 类型函数的支持不同,Upgrade.php mime_content_type 替换可能并不总是可靠。然而,exif_imagetype 函数往往在跨服务器上表现一致。如果只关心图像文件,您可以考虑仅使用此函数来确定 mime 类型。
以上是如何在 PHP 中确定文件的'Content-Type”?的详细内容。更多信息请关注PHP中文网其他相关文章!