2014-09-12 5 views
2

파일을 업로드하고 주어진 파일의 MIME 유형을 반환하는 PHP 스크립트가 있습니다. 이것은 작은 파일 크기에서는 잘 작동하지만 큰 파일 (100MB +)을 사용하기 시작하면 응답이 빠르게 저하됩니다.PHP에서 대용량 파일의 MIME 유형 가져 오기

주어진 파일의 mimetype을 메모리에로드하거나 전체 파일을 읽지 않고 신속하게 검색 할 수있는 방법이 있습니까? 내가 아는 한 mimetype은 파일의 처음 몇 바이트에 저장되므로 전체 리소스를 처리 할 필요가 없습니다. 맞습니까? 나는 다음을 시도했다 :

finfo_open(FILEINFO_MIME_TYPE) -> crashes on files over 60mb 

file -bi -> Delay directly relates to size of file. Slow (10+ seconds) 

xdg-mime query filetype your_file -> Slow. As above 

나는 다른 PHP 스크립트/모듈을 찾을 수 없다. 나는 이것을 경험 한 유일한 사람이 아니라고 확신하지만, 나는 해결책을 찾지 못해서 내 Google-fu가 부족한 것처럼 보인다.

저는 프로덕션 설치와 마찬가지로 Oracle Linux 상자에서 작업하고 있습니다.

감사합니다.

편집은 : 내 파일도 파일 확장명이없는, 당신은 확장 파일에 의존 할 수없는 경우 그들은 훨씬

eed78421-7184-46f3-9c68-73315c47e3c8 
+1

http://stackoverflow.com/questions/134833/how-do-i-find-the-mime-type-of-a-file-with-php http://stackoverflow.com/ 질문/21906596/find-mime-of-file-or-url-using-all-file-format – Sarang

+0

@Sarang 감사합니다. 그러나 주된 질문에 나열된대로 그 방법을 시도해 보았습니다. 내 파일에는 확장명이 없습니다. 나는 그 사실을 가지고 질문을 수정할 것이다. – chandler3224

답변

1

같은 고유 한 ID로 저장됩니다 그리고 당신은 전체 파일을로드하지 않도록 할 당신이 찾고있는 것은 파일 서명이나 매직 넘버와 어디에서 가져올 것인가입니다. 위키 백과에는 불완전한 목록이 있는데, 이는 마술 숫자에서 파일 확장자로 매핑됩니다 (여기서 당신은 MIME 유형으로 매핑 할 수 있습니다).

https://en.wikipedia.org/wiki/List_of_file_signatures

그럼 당신은 몇 바이트를 읽고 매직 넘버 (당신은 아마 몇 특정 것들에 대한보고 싶어요)를 확인하기 위해 제한된 http://php.net/manual/en/function.fread.php를 사용하여 뭔가를 구현해야합니다.

+0

보다 포괄적 인 목록을 제공하는 다른 웹 사이트를 발견했습니다 : http://www.garykessler.net/library/file_sigs.html –

관련 문제