2009-11-18 9 views
2

사용자가 Microsoft Word 문서를 업로드해야하는 문서 작업 중입니다.업로드 된 파일 확인

파일 확장명을 .doc 또는 .docx로 확인하는 것 외에 업로드 된 파일이 실제로 Microsoft Word 문서이고 .doc 또는 .docx 확장명으로 바뀐 다른 파일이 아닌지 확인할 수있는 다른 방법이 있습니까? .

미리 감사드립니다.

답변

6

PHP 5.3을 사용하지 않는 경우 mime_content_type 함수가 도움이 될 수 있습니다.

PHP 5.3을 사용하거나 PECL 확장을 설치할 수있는 경우 새 Fileinfo 라이브러리가 작업을 수행해야합니다. 자세한 내용은 finfo_file을 참조하십시오.
주어진 예제에서 식별 된 MIME 유형 중 하나는 "application/vnd.ms-excel"입니다.

: MS 워드는 마이크로 소프트의 .doc 파일 당신은 매직 넘버에 대한 파일의 처음 몇 바이트를 확인하실 수 있습니다 ;-)

5

.docx은 표준 zip 압축 스키마를 사용하여 압축 된 일련의 XML 파일입니다. 따라서 압축 해제 알고리즘에 전달하여 압축이 풀리는 지 확인한 다음 적절한 xml 파일을 살펴보고 문서에서 찾을 것으로 예상되는 필드를 확인하십시오.

3

당신은 시도해 볼 수도 있습니다 : 파일 내용을 조사하고 어떤 파일 형식으로 감지합니다 리눅스 file 프로그램을 실행 할

$type = `file -bi $UploadedFilePath`; 

합니다.

많은 파일 유형에서 작동하며 (프로덕션 코드에서이 파일을 사용하여 업로드 된 파일을 감지합니다.) Microsoft Word 문서 버전에서는 잘 모릅니다.

3

너무 파일과 그래서, 행운의 비트와 함께, 그것을 처리 할 수 ​​있어야한다 D0 CF 11 E0 A1 B1 1A E1

및 바이트 오프셋 512의 "부제목"