Move_uploaded_file ne marche!!
misscasa2009
Messages postés
64
Date d'inscription
Statut
Membre
Dernière intervention
-
le père -
le père -
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.
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.
9 réponses
Bonjour
Je crois qu'il te manque simplement un / entre le répertoire de destination et le nom du fichier
Je crois qu'il te manque simplement un / entre le répertoire de destination et le nom du fichier
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 ?
As-tu vérifié la valeur de retour de move_uploaded_file ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ??
chmod ("fichiers-tarif/", 0777);
ça marche tjr pas!!
comment faire pour vérifié la valeur de retour de move_uploaded_file ??
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";
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";
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 ??
c'est pas la racine du serveur ??
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/
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/