2013-01-05 3 views
0

내 업로드 스크립트가 의도 한 파일 형식을 업로드하지 않는 것처럼 보입니다.업로드 스크립트가 업로드 할 파일 형식을 등록하지 않습니다.

<?php 

$allowedExts = array("jpg", "jpeg", "gif", "png"); 

$extension = end(explode(".", $_FILES["file"]["name"])); 

if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/png") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 20000) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

    if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
?> 

스크립트는 관계없이 항상 내가 바꿀 것 "잘못된 파일"로 파일을 나열없는 것 : 여기 스크립트입니다. 대신 업 로더와 같은 디렉토리의 특정 파일에 업로드하고 싶습니다.

+0

난 것 파일 형식 – Andy

+0

을 식별 할 수 http://uk1.php.net/manual/en/function.finfo-file.php을 사용하려고하지만, 대부분의 PHP는이다 나 혼란 스럽지만, 아직 초보자. – lordtenteth

+0

어쨌든 나는 기초를 배우고 사용하고있는 모든 PHP 코드를 이해하려고 노력하는 것이 좋습니다. 인터넷에서 스크립트를 복사하여 붙여 넣으면 문제가 발생합니다. – Andy

답변

1

자세한 설명 오류를 사용하십시오. 필요한 경우 워크 플로를 변경하십시오.

예를 들어

:

$allowedExts = array("jpg", "jpeg", "gif", "png"); 
$mimes  = array('image/gif','image/jpeg','image/png','image/pjpeg'); 
$extension = end(explode(".", $_FILES["file"]["name"])); 

function check_errors() 
{ 
    if (!in_array($_FILES["file"]["type"], $mimes)) 
     return "Invalid MIME type: " . $_FILES["file"]["type"]; 
    if ($_FILES["file"]["size"] >= 20000) 
     return "File too long: size=" . $_FILES["file"]["size"]; 
    if (!in_array($extension, $allowedExts)) 
     return "Extension not allowed: '".$extension."'"; 
    if ($_FILES["file"]["error"] > 0) 
     return "Return code " . $_FILES["file"]["error"]; 
    return "OK"; 
} 

if ('OK' == ($reason = check_errors())) 
{ 
    // your code 
} 
else 
{ 
    echo "ERROR: $reason"; 
} 
+0

지금 500 개의 내부 오류가 발생합니다. – lordtenteth

관련 문제