2011-08-03 5 views
0

업로드 된 파일이 CSV 파일인지, CSV 파일을 선택한 후이 코드로 확인한 후 CSV 파일이 아니라는 메시지를 계속 보내 주는지 테스트하고 싶습니다. .업로드 된 파일이 CSV 파일인지 확인

if($_FILES["file"]["type"] <> "application/vnd.ms-excel"){ 
    die("This is not a CSV file."); 
} 
+7

csv 파일은 Excel 파일이 아닙니다. – marto

+0

왜 돌아 오는 유형을 덤프하고 테스트할까요? –

+0

텍스트 파일 인 경우 CSV 파일 일 수도 있고 그렇지 않을 수도 있습니다. 당신이 정말로 그것을 파싱하려고하는지 알 수 있습니다. 또한, 완전히 $ _FILES [ 'type']'을 사용하지 마십시오. 완전히 검증되지 않은 데이터입니다. – deceze

답변

1

가장 간단한 검사는 "파일 이름이 .csv"으로 끝나는 지 확인하는 것입니다. 이렇게하면 최대한의 효과를 얻을 수 있지만 CSV 확장 프로그램을 사용하여 다른 사람이 시도하고 업로드 할 수있는 가능성이 있습니다.

다음 확인은 파일이 텍스트 (바이너리가 아니라 Excel 파일이 실패해야 함)임을 확인해야합니다. 이렇게하려면 ascii representation of each character : 캐리지 리턴, 줄 바꿈 및 탭을 제외하고 32 미만의 값이 없어야합니다.

파일이 텍스트 인 것을 알게되면 CSV parser을 통해 실행할 수 있고 if 그 결과는 난센스이거나 그렇지 않다.

+0

+1, 허용되는 문자 목록에 탭을 추가 할 수 있습니다. –

+0

@ 앤더스 : 정중하게 부름; 텍스트를 수정했습니다. –

관련 문제