2011-03-31 6 views
1

blueimp's jQuery file upload script을 사용하려고합니다.PHP 및 jQuery 파일 업로드 문제

파일은 "upload.php로"로 전송됩니다

if (isset($_FILES['file'])) { 

    $file = $_FILES['file']; 

    // Set variables 
    $file_name = stripslashes($file['name']); 

    if (!is_uploaded_file($file['name'])) { 
     echo '{"name":"'.$file_name.' is not a uploaded file."}'; 
     exit; 
    } 
} 

을 ..하지만 스크립트는 isset을 통과에도 불구하고 is_uploaded_file에 실패 ($ _ FILES [ '파일']).

무엇이 문제의 원인 일 수 있습니까?

편집 :

나는 $file['tmp_name']$file['name'] 변경과 is_uploaded_file이 전달됩니다. 이제 스크립트는 move_uploaded_file에 실패 : 당신은 is_uploaded_file($file['tmp_name'])를 사용해야합니다

if (move_uploaded_file($file_name, $upload_dir."/".$file_name)) { 
    echo "success"; 
} else { 
    echo "failed"; 
} 
+0

무엇이'var_dump ($ _ FILES [ 'file']); – chriso

답변

3

. 이것은 서버의 실제 파일 이름입니다.

$file['name']은 클라이언트 컴퓨터의 파일 이름이며 파일을 업로드 한 후에 파일의 이름을 바꾸는 데 유용합니다.

자세한 내용 is_uploaded_file()에 문서를 읽어

적절한 작업에

이 함수 is_uploaded_file()가 $ _FILES [ 'userfile로'] [ 'tmp_name'] 같은 인자 필요 - 클라이언트의 컴퓨터 $ _FILES [ 'userfile로'] [ '이름']에 업로드 된 파일의 이름은

는 또한, 당신은 move_uploaded_file()뿐만 아니라 작동하지 않습니다 말했다 작동하지 않습니다. 예상대로,이는 동일한 문제로 인해 발생 : 파일 $file_name을 이동하려고

하지만 $file_name$file['tmp_name']$file['name']로 설정되어 있지 않습니다. $file['name']에는 원래 파일 이름이이고 컴퓨터에는 $file['tmp_name']에 파일 이름이 임시 저장되어 있지 않은 서버의 경로를 나타내는 문자열이 포함되어 있습니다.

+0

이것은 효과가있었습니다! 그러나 move_uploaded_file에서 스크립트가 실패합니다. 나는 그 질문을 갱신 할 것이다. 잠시만 기다려주세요. – o01

+1

@Orolin 전에 정확히 똑같은 문제가 아닌지 확인하십시오. –

+0

고마워요. 변수를 여기에도 변경하려고합니다 ... – o01