2009-10-26 6 views
2

PHP 스크립트를 통해 업로드 된 파일을 가져 오려고하는데, $ _FILES 배열은 항상 비어 있습니까? 파일 HTML 입력 요소에 대한 My $ _POST 데이터 항목에 파일 이름이 있습니다 ... 로컬 시스템에 파일이 생성되지 않았습니다.

임시 폴더에 대한 쓰기 권한을 확인하고 명시 적으로 설정했습니다. phpinfo()를 검사하여 파일 업로드가 활성화되어 있는지 확인했습니다.

무엇이 이것을 방지 할 수 있습니까? mod_rewrite가 원인이 될까요?

감사합니다.

답변

14

, 다음 $ _FILES의 errno 변수를 확인, 실패에 대한 여러 가지 원인이있을 수 있습니다. 일반 값은 MAX_FILE_SIZE을 (를) 초과했습니다.

http://php.net/manual/en/features.file-upload.errors.php

PHP 4.2.0부터, PHP는 파일 배열에 따라 해당 오류 코드를 반환합니다. 오류 코드는 파일 업로드 중에 작성된 배열의 오류 세그먼트에서 발견 될 수 있습니다. 즉, 오류가 $ _FILES [ 'userfile'] [ 'error']에서 발견 될 수 있습니다.

UPLOAD_ERR_OK 값 : 0; 파일을 성공적으로 업로드 한 오류가 없습니다.

UPLOAD_ERR_INI_SIZE 값 : 1; 업로드 된 파일이 php.ini의 upload_max_filesize 지시문을 초과합니다.

UPLOAD_ERR_FORM_SIZE 값 : 2; 업로드 된 파일이 MAX_FILE_SIZE 지시문 ( )을 HTML 양식에서 지정했습니다.

+0

print_r ($ _ FILES)의 결과는 array() ... 불행히도 해당 데이터를 사용할 수 없습니다. 그러나 나는 enctype = "multipart/form-data"를 가지고있다. –

+0

좀 더 자세히 보았습니다. 더 낮은 해상도의 화면에서 이상하게도 재미있게 보였습니다. 코드에 오타가있었습니다. 이것은 내가 찾은 처음 몇 가지 해결책 중 일부를 고려하면 훨씬 더 아이러니합니다. "오타를 조심하십시오." 그래서 ... 간단히 말해서 ... 여기에 줄을 서서 타이핑을 조심해야 해! 바지 모두의 모든 킥 주셔서 감사합니다 :) –

12

양식에 enctype을 정의합니까?

<form method="post" enctype="multipart/form-data"> 

설정하지 않으면 파일이 업로드되지 않습니다.

+0

예, 아주 오래된 스레드에 회신하고,하지만 내 정확한 오류 및 솔루션이었습니다. –

3

양식에 올바른 enctype이 있습니까? 당신은 적절한에 enctype (<form method="post" enctype="multipart/form-data">)에있을 때

enctype="multipart/form-data" 
관련 문제