PHP에서 파일의 `Content-Type`을 어떻게 결정합니까?

Mary-Kate Olsen
풀어 주다: 2024-11-27 07:52:14
원래의
604명이 탐색했습니다.

How do you determine the `Content-Type` of a file in PHP?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿