2013-03-13 15 views
5

Po prostu próbuję załadować plik i nic nie działa.Dlaczego mój plik nie jest ładowany?

<!DOCTYPE html> 
<html><body> 

      <form id="exp" enctype = "multipart/form-data" action="../cgi-bin/uploadPic.php"> 
       <input type="file" id="profilePic2" name="newPic"></input> <br /><br /><br /> 
       <input type="submit" value="Upload Pic" style="color:black;"></input> 
      </form> 
    </body></html> 

Mój plik php jest wykonywany. Proszę pamiętać o niechlujnym kodzie, próbuję debugować za pośrednictwem echa.

<html> 
<body> 
<?php 

$loadFile = true; // error code 
$allowedExts = array("jpg","jpeg","gif","png"); 
$extension = end(explode(".", $_FILES["newPic"]["name"])); 

$file = $_FILES["newPic"]; 
$picIncluded = false; 

if(( ($_FILES["newPic"]["type"] == "image/gif") 
|| ($_FILES["newPic"]["type"] == "image/jpeg") 
|| ($_FILES["newPic"]["type"] == "image/png") 
|| ($_FILES["newPic"]["type"] == "image/pjpeg")) 
&& ($_FILES["newPic"]["size"] < 5000000) 
&& in_array($extension, $allowedExts)){ 
    if($_FILES["newPic"]["error"] > 0){ 
     echo "pnl"; // error code returned to client 
    } 
    else if(file_exists("../profile-pics/" . $file["name"])){ 
     echo "pld"; // picture loaded duplicate 
    } else { 
     $picIncluded = true; 
     echo "finally"; 
     if(move_uploaded_file($file["name"]["tmp_name"],"./" . $file["name"])){ 
      echo "Success again!"; 
     } 
     $path = "../profile-pics/" . $file["name"]; 
    } 
} 
if(is_uploaded_file($_FILES["newPic"]["name"]["tmp_name"])){ 
    echo "Good news!"; 
} 

?> 

</body> 
</html> 

Zresztą move_uploaded_file function() zwraca false, ponieważ nie można znaleźć pliku tymczasowego. is_uploaded_file() zwraca także wartość false. Moje rozszerzenia i wszystko jest poprawne, ale nadal bez skutku, nie ma żadnego pliku do przesłania. Jak mogę to debugować?

+1

Czy masz wystarczającą liczbę uprawnień do folderu? –

+0

Jak sprawdzić? Używam Fedory. Mój php znajduje się w/var/www/cgi-bin /. Gdzie są zapisywane pliki tymczasowe? –

+0

oops. Nie mam pojęcia o Fedorze. Ktoś może ci pomóc. –

Odpowiedz

5

zmiana ta

if(move_uploaded_file($file["name"]["tmp_name"],"./" . $file["name"])){ 

do

if(move_uploaded_file($file["tmp_name"],"./" . $file["name"])){ 

bo przypisano

$file = $_FILES["newPic"]; 
+0

Nie sądzę, że to jest powód –

+0

@ Mr.Student Po przypisaniu '$ file = $ _FILES [" newPic "];", możesz odwoływać się tylko do tablicy jednowymiarowej pliku $, nie ma tablicy dwuwymiarowej w pliku $.) –

+0

Mój błąd, masz rację –

2

również do kontroli bezpieczeństwa, należy sprawdzić is_uploaded_file() przed przesłaniem:

if(is_uploaded_file($_FILES["newPic"]["tmp_name"])){ 
if(move_uploaded_file($_FILES["newPic"]["tmp_name"],"../profile-pics/" . $file["name"])){ 
    echo 'file uploaded...'; 
} 
}else{ 
    echo "Possible file upload attack: "; 
} 
+0

Dziękuję za poinformowanie mnie, nie wiedziałem o tym i Zawsze mam zamiar uczyć się najlepszych praktyk. –

Powiązane problemy