2009-03-16 10 views
6

PHP에서 파일 MIME 유형을 감지하는 가장 좋은 방법 (PHP 5.2에서 설치 가능하며 아직 개발 중)을 찾고 있습니다.PHP에서 MIME 유형 감지하기

나는 mime_content_type() 메서드와 Fileinfo 확장을 알고 있지만, mime_content_type()은 신뢰할 수없고 더 이상 사용되지 않으며 Fileinfo는 "표준"PHP (5.2) 설치에 포함되어 있지 않습니다.

다른 옵션이 있습니까?

답변

5

이 PEAR 패키지를 살펴 보셨습니까?

http://pear.php.net/package/MIME_Type

+0

감사합니다. 이상적인 것은 아닙니다. 실제로 언급 한 두 가지 방법, 즉 모든 시스템 (예 : Windows)에서 작동하지 않는 또 다른 방법을 사용하려고 시도한 다음 확장자에 따라 탐지로 넘어가지만 내 최상의 옵션처럼 보입니다. 당분간. –

0

당신은 당신이 실행중인 웹 서버에 subrequest을 할 수있는 다음 마임 그런 식으로 입력 얻을 수있는 헤더를 구문 분석합니다. 느리기 때문에 curl을 사용하여 전체 요청이 아닌 헤더 만 가져옵니다. 대용량 파일을 볼 때 중요합니다.

Apache를 실행하고 php를 모듈로 사용하는 경우 VIRTUAL 기능을 살펴보십시오. 곱슬 곱슬을 사용하는 것보다 하위 요청을하는 것이 더 빠릅니다.

그렇지 않으면 MIME 유형을 확장명으로 조회 할 수 있습니다. 이렇게하면 잘 명명 된 모든 파일이 작동합니다.

11

(LOL 죄송합니다 나는이 질문을 받았다 개월 전 내가 마무리되면서 깨달았다. 아, 물론.뿐만 아니라이를 추가 할 수 있습니다 ...)

을 당신이 파일 명령을 사용할 수있는 유닉스 계열의 서버가 있다면.

file -bi <filepath> 

PHP에서 "exec"를 사용해야합니다. 나는 ... PHP 새로운 그래서이 날을 인용하지 않지만 해요

$content_type = exec("file -bi " . escapeshellarg($filepath)); 

당신이 경로 문자열을 탈출하고 출력을 포맷해야 할 수도 있습니다, 그래서 내가 그것을 테스트하지 않았다.

다른 방법보다 더 신뢰할 수 있다면 Dunno.

+2

파일 -b --mime-type $ filename을 사용하지만 좋은 대답입니다! – icco

+0

감사합니다. 감사합니다 !!!! – Kama

관련 문제