2013-02-02 3 views
1

Cette question a été posée de la même manière plusieurs fois, mais ces réponses ne s'appliquent pas au problème que j'ai. Je les ai tous vérifiés.move_uploaded_file échoue sans erreur

Fondamentalement, la fonction move_uploaded_file retourne false à chaque fois, même si j'ai l'impression d'avoir tous mes canards à la suite. Il n'y a pas d'erreur, cela renvoie juste false.

J'ai vérifié le fichier en cours de téléchargement, il n'a pas d'erreurs.

Cela peut être un problème d'autorisations, j'ai essayé de changer le répertoire que je suis en train de télécharger les images à l'aide de chmod (dir, 0777). Si c'était un problème d'autorisations, je ne suis pas sûr que cela l'aurait corrigé. Edit - Vérifié iswritable (dir) du répertoire et il dit son writable.

J'ai un attribut enctype = "multipart/form-data" dans mon formulaire.

Ceci est mon code:

function uniqueName() 
    { 
    $target = dirname(__FILE__) . '/TestProject/'; 
    $uid = uniqid(); 
    $ext = pathinfo($_FILES['photo']['name'], PATHINFO_EXTENSION); 

    $_FILES['photo']['name'] = $uid . "." . $ext; 

    if(move_uploaded_file($_FILES['photo']['name'], $target . $_FILES['photo']['name'])) 
     echo("upload succeeded"); 
    else { 
     echo("upload failed"); 
    } 

    return $target . $_FILES['photo']['name']; 
    } 

Est-ce que je manque quelque chose? Toute aide serait appréciée.

+1

Assurez-vous de vérifier cette extension de fichier, sinon les gens peuvent télécharger leurs propres fichiers PHP. – Gumbo

+0

Je ne vois rien de mal avec votre code. Vérifiez votre paramètre php.ini, peut-être que les fichiers que vous téléchargez sont trop volumineux. aussi, vérifiez si le répertoire existe et que PHP le redirige vers le fichier. – shnisaka

+0

Que voulez-vous dire par php rediriger le fichier dans le répertoire? Je pensais que c'était ce que le move_uploaded_file() faisait? Ai-je besoin d'ajuster quelque chose de plus? – SmashCode

Répondre

2

le fixe, le premier paramètre de move_uploaded_files() attend le tmp_name, non le nom.

1

d'abord, et j'oublie parfois assurez-vous que votre forme ressemble à ceci:

<form id="myform" name="myform" action="#" method="post" enctype="multipart/form-data"> 

élément clé de c'est le

enctype="multipart/form-data"> 

et aussi loin que le téléchargement j'utiliser ce qui suit et fonctionne à chaque fois:

if ($_FILES["fuImg"]["error"] > 0) 
    { 
    echo "Error: " . $_FILES["fuImg"]["error"] . "<br>"; 
    } 
else 
    { 
     move_uploaded_file($_FILES["fuImg"]["tmp_name"], "../img/bands/" . $_FILES["fuImg"]["name"]); 
    } 
+0

Je pensais à mentionner que, j'ai l'attribut enctype = "multipart/form-data dans mon formulaire – SmashCode

+0

Je me suis rendu compte que vous avez votre code dans une fonction, comment affichez-vous cette fonction? C'est comme n'importe quel autre domaine, vous publiez du formulaire à quelque part, mais quoi que vous postiez, vous devriez recevoir ces valeurs – Andres

+0

$ _FILES [] est une variable globale qui ne devrait pas être le problème – SmashCode