2011-01-26 1 views
4

PHP 업로드시 응용 프로그램의 유효한 MIME 유형 세트와 일치하도록 업로드되는 파일의 MIME 유형을 확인하려고합니다. fileinfo()를 사용하여 Office 2007 파일의 MIME 유형을 확인하려고 시도하면 해당 MIME 유형으로 감지되지 않습니다. http://filext.com/faq/office_mime_types.phpPHP 5.3.5 fileinfo() MS Office 2007 파일의 MIME 유형 - magic.mime 업데이트?

예 PHP 코드 : 대신 MIME 타입의 응답은 "응용 프로그램/우편 번호"

Office 문서 MIME 타입입니다

$ oFileInfo = 새로운 finfo (FILEINFO_MIME_TYPE);

$ sMimeType = $ oFileInfo -> 파일 ($ _FILES [ 'Filedata'] [ 'tmp_name']);

echo $ sMimeType;

서버 설치 정보 :

  • OS : Windows Server 2003 32 비트
  • 웹 서버 : IIS 6.0
  • PHP : FastCGI를을 사용하여 5.3.5 (안전 스레드) 1.5
  • 파일 : magic.mime
    • 어둠의 어둠 속의 예고편 2008 년 4 월 16 일 09:35
      • 링크 : php.net/manual/en/fileinfo.installation.php
    • 크기 : 517킬로바이트
    • 소스 : 소스 포지 : GNU32 - 파일 유형 gnuwin32.sourceforge.net/packages/filetype. HTM

나는 웹 서버에서 다운로드 할 때 새로운 오피스 형식으로 문제를 참조 수많은 게시물을 발견했습니다. 이 모든 예제에서 나는 기존의 magic.mime 파일에 새로운 MIME 유형을 추가하거나, 이미 Microsoft Office 2007+ MIME 유형을 포함하고있는 magic.mime 파일에 대한 링크를 추가하는 방법을 보여주는 곳을 찾지 못했습니다. 도움을 주셔서 감사합니다.

답변

0
  1. 예, magic.mime을 업데이트해야합니다.
  2. 브라우저에서 보낸 MIME 형식을 믿을 수 없다는 메시지가 표시됩니다 ($_FILES['Filedata']['type'])
  3. 설명서에 사용되지 않는 기능을 사용하는 이유는 무엇입니까? http://php.net/manual/en/function.mime-content-type.php

주 : 마법 바이트의에 의해finfo() 파일의 MIME 타입을 결정; Office 2007 파일 (ePUB 등 많은 다른 파일 형식)이 특정 디렉토리 구조를 가진 단순한 zip 패키지라는 사실을 고려하면 을 반환하는 것이 finfo() 인 것이 합리적입니다.

내가 압축 해제를 제안 또는 당신이 정말로 그것을의 내용을 기반으로 파일 형식을 따지기하려는 경우,이 구조의 검사 내용을 나열합니다

+0

"new finfo (FILEINFO_MIME_TYPE);" 현재 (비 비난 한 장원) 권리입니까? mime_content_type() 함수는 실제로 내가 이해하는 것으로 사용되지 않는 것입니다. – Arachnid

+0

맞아, 혼란 스럽네, 미안. – timdream

+0

질문은 물론, magic.mime 파일을 업데이트하는 방법, 그 단서가 있습니까? – Jorre

0

가 추가하려고했습니다 (업로드 할 때이 아닌 MIME 타입 브라우저 보고서) IIS에 새로운 MIME 유형?

  1. 오른쪽 버튼으로 클릭 "웹 사이트"에 스냅인 인터넷 관리에 도착하고 "속성"
  2. 선택 "HTTP 헤더"
  3. 새로운 입력 "마임 유형"
  4. 를 선택 선행 마침표가없고 적절한 마임 유형이있는 확장. 각 확장에 대해 필요한만큼 반복합니다. "OK"
  5. 클릭
+0

Sorry Twister,하지만 문제는 웹 서버가 아닙니다. 문제는 업로드중인 실제 파일의 MIME이 유효한지 확인하는 것입니다. – Arachnid

+0

예, php가 웹 서버 mime 테이블을 사용하여 파일 mime 유형을 식별하고있을 수 있습니다. – Twister

+1

PHP Fileinfo finfo()가 사용하도록 설정되어있는 magic.mime 파일 이외의 다른 것을 사용하고 있다면 꽤 놀랄 것입니다. 그러나 IIS에서 MIME 형식을 .docx 및 .xlsx MIME 형식으로 추가하여 테스트 한 후에도 상황은 변경되지 않습니다. – Arachnid

1

최근 Office 파일이 실제로 ZIP 아카이브 모든 대화 상자를 닫습니다. 그것이 MIME Magic 데이터베이스가 ZIP 파일로 탐지하고있는 이유입니다. 파일 확장명을 기반으로 특수 규칙을 추가하거나 우편 번호가 docProps 폴더인지 확인해야 할 수 있습니다 (Office ZIP 보관 파일에는 문서에 대한 메타 데이터가 포함 된 폴더가 있음).

실제로 다른 확장자를 가진 ZIP 아카이브 인 다른 파일 형식이 있습니다 (예 : JAR 파일.

+0

jmz, 네, 그들이 ZIP 아카이브라고 알고 있습니다. 그러나 MIME 형식은 Office 2007+ 파일의 경우 filext.com/faq/office_mime_types.php에서 찾을 수 있습니다. 나는 이것을 탐지 할 수있는 업데이트 된 magic.mime 파일이 필요하다고 확신한다. 업데이트 된 magic.mime을 찾을 수없는 경우 실제 magic.mime 행을 다양한 Office 2007+ 확장에 대한 기존 magic.mime 파일에 추가 할 수 있습니다. – Arachnid

+0

아무도 해결책에 대한 아이디어가없는 것 같아 많은 사람들이 magic.mime 파일 구문과 방법론을 알 수 없다고합니다. 나는 사람들이 당신의 마술을 망치지 말라고 말하는 수많은 게시물을 발견했습니다. 파일을 망칠 까봐 두려워서. 슬프게도, 그 중 누구도 파일이 어떻게 작동 하는지를 알 수있는 곳을 지적하지 않았습니다. – Arachnid

+1

당신은 항상 man 페이지를 볼 수 있습니다. http://linux.die.net/man/5/magic – jmz

1
  1. 예, magic.mime을 업데이트해야합니다.

권자, 예, 문제 해결. 불행히도, 마술 형식의 시스템이 실제 파일 내용을 보면서 작동하는 것처럼 보입니다. 파일이 압축 되었기 때문에 압축을 풀 수 없으며 (어떤 파일을 볼 수 있습니까?)

누군가가 함수 작성을 제안했습니다. 압축 된 파일의 압축을 풀고 "DocProps"디렉토리가 있는지 확인하십시오. 그러나 이것은 프로덕션 서버에 또 하나의 공격 벡터를 도입합니다.

+0

그리고 저는 여기서 Microsoft가 보안을 향상시키기 위해 일들을 정리하고 있다고 생각했습니다. :-) – Arachnid