2009-11-16 6 views
2

간단한 질문입니다. 업로드시 txt 파일 만 허용하는 방법이 있습니까? 나는 주변을 둘러 보았고 PHP를 허용하는 text/php 만 찾았습니다.제한 파일 업로드 유형

$uploaded_type=="text/php

답변

4

PHP로 파일을 업로드 할 때 $ _FILES 배열에 저장됩니다. 이 내 파일 EG $_FILES['file']['type']

의 MIME 유형이 "유형"라는 키는 그것은 아주 잘 here 설명 것

if($_FILES['file']['type'] == 'text/plain'){ 
    //Do stuff with it. 
} 

을 따라서는 txt 파일입니다 확인할 수있다. 또한 파일 확장명에 의존하지 말고 매우 신뢰할 수 없습니다.

1

당신은 업로드 된 파일의 파일 확장자를 확인해야합니다.

배 HttpUpload가 있으며,이 기능을 지원합니다.

2

업로드 파일의 MIME 유형을 확인할 수 있습니다. CodeIgniter를,이 코드는 업로드 라이브러리에 사용되는 : 업로드 된 파일이 허용 된 유형인지 아닌지

다음 업로드 구성을 확인하는 데 사용되는 변수 $this->file_type
$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']); 

은 볼 수 있습니다. CodeIgniter 업로드 라이브러리 파일에서 전체 코드를 볼 수 있습니다.

3

간단히 말해서 : 방법이 없습니다. 브라우저는 파일 업로드 필드 (HTML 표준에 통합되거나 계획되었지만 거의 구현되지 않은 AFAIK)에 대한 유형 제한기를 지속적으로 지원하지 않습니다. 파일 확장명과 MIME 형식 정보는 모두 사용자가 제공하므로 신뢰할 수 없습니다.

실제로 파일을 구문 분석하고 예상 한 형식으로 유효성을 검사하는지 확인할 수 있습니다. 이는 신뢰할 수있는 유일한 방법입니다. 조심해야 할 것은 악의적으로 잘못된 파일로 인해 발생하는 버퍼 오버 플로우 등입니다. 원하는 모든 것이 텍스트 파일이라면 그렇게 큰 문제는 아닙니다.