Move_uploaded_file ne marche!!

Fermé
misscasa2009 Messages postés 64 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 12 mars 2010 - 16 avril 2009 à 12:01
 le père - 16 avril 2009 à 14:46
Bonjour,
j'ai mis un formulaire qui demande à l'utilisateur d'uploader un fichier image,
tout ce passe bien quand j'affiche les information concernant l'upload avec la fonction print_r($_FILES);
mais pour changer le répertoire cible du répertoire temporaire vers un dossier nommé fichiers-upload et situé dans la racine de mon serveur; ça ne marche pas!!!

voilà mon code:


<?
if ($_FILES['nom_du_fichier']['error']) {
switch ($_FILES['nom_du_fichier']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo "Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert !";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle !";
break;
}
}
else {
// $_FILES['nom_du_fichier']['error'] vaut 0 soit UPLOAD_ERR_OK
// ce qui signifie qu'il n'y a eu aucune erreur
}
?>
<? print_r($_FILES); ?>
<?

if ((isset($_FILES['nom_du_fichier']['fichier']) && ($_FILES['nom_du_fichier']['error'] == UPLOAD_ERR_OK)))
{
$chemin_destination = '/fichiers-upload';


move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'], $chemin_destination.$_FILES['nom_du_fichier']['name']);
echo "le fichier a été transféré";
}

?>

Merci d'avance.
A voir également:

9 réponses

Bonjour

Je crois qu'il te manque simplement un / entre le répertoire de destination et le nom du fichier
0
misscasa2009 Messages postés 64 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 12 mars 2010
16 avril 2009 à 12:23
j'ai mis ça:

$chemin_destination = '/fichiers-upload/';

mais ça tjr pas
0
As-tu bien donné des droits complets au répertoire /fichiers-upload/ ? (chmod 0777)
As-tu vérifié la valeur de retour de move_uploaded_file ?
0
misscasa2009 Messages postés 64 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 12 mars 2010
16 avril 2009 à 13:19
a vrai dire non!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
misscasa2009 Messages postés 64 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 12 mars 2010
16 avril 2009 à 13:19
je vais le mettre et voir ce que ça donne;
0
misscasa2009 Messages postés 64 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 12 mars 2010
16 avril 2009 à 13:50
j'ai ajouté cette ligne:

chmod ("fichiers-tarif/", 0777);

ça marche tjr pas!!
comment faire pour vérifié la valeur de retour de move_uploaded_file ??
0
Le répertoire c'était /fichiers-upload/, pas fichiers-tarif/ il me semble. Mais tu pouvais le faire sans PHP si tu as la main sur ton serveur.
Autre question : le répertoire /fichiers-upload/ est-il bien à la racine du serveur comme tu le dis, ou seulement à la racine de ton site ? c'est très différent ! Comment l'as-tu créé ?

Pour vérifier la valeur de retour de move_uploaded_file, comme la valeur rendue est un booleen, il suffit de faire :

if (move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'], $chemin_destination.$_FILES['nom_du_fichier']['name']))
echo "le fichier a été transféré";
else echo "problème de transfert du fichier";
0
misscasa2009 Messages postés 64 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 12 mars 2010
16 avril 2009 à 14:35
le non de fichier c'est fichiers-upload , je l'ai créer à partir de filezilla dans le répertoire www de mon site,

c'est pas la racine du serveur ??
0
Je me suis mal exprimé, je pensais à serveur dans le sens PC.
Ce qu'il faut à move_uploaded_file, c'est un nom de fichier destinataire dans le système de fichiers du serveur. Si tu mets un nom qui commence par /, il va chercher à la racine du lecteur (par exemple C:/ sous windows) et non pas à la racine de ton site.
Il suffit probablement que tu modifies
$chemin_destination = '/fichiers-upload/';
en
$chemin_destination = './fichiers-upload/';
ou
$chemin_destination = '../fichiers-upload/';
pour que ça marche, ça dépend d'où est ton script par rapport au répertoire fichiers-upload/
0