Problème fonction move_uploaded_file
Fermé
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
-
21 déc. 2009 à 10:31
Utilisateur anonyme - 23 déc. 2009 à 13:14
Utilisateur anonyme - 23 déc. 2009 à 13:14
A voir également:
- Problème fonction move_uploaded_file
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction miroir - Guide
- Fonction remplacer word - Guide
16 réponses
Utilisateur anonyme
21 déc. 2009 à 10:42
21 déc. 2009 à 10:42
Déjà pour ton 1er cas, c'est normal qu'il "passe dans le if" sachant que la fonction move_uploaded_file écrase le fichier existant pour mettre le sien. Donc utilise plutôt la fonction file_exists($dossier . $fichier) pour savoir si ton fichier existe et met un un "!" devant, pour savoir qu'il n'existe pas.
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
21 déc. 2009 à 10:50
21 déc. 2009 à 10:50
il faut faire :
if(is_file($dossier.$fichier)) //le fichier existe déjà else if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //le fichier à bien était chargé else // ERREUR
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
21 déc. 2009 à 11:26
21 déc. 2009 à 11:26
Bonjour à tous, merci beaucoup pour vos réponses, bon j'ai rajouté le test if(!is_file($dossier.$fichier)) là effectivement dans le premier cas ça marche très bien je transfère mon fichier (ça marche le fichier est monté) puis quand j'essaie de retransférer le même là il me dis bien que ça a déjà ,été fait mais dans mon deuxième cas ça ne marche toujours pas et (je suis nouveau sur mandriva linux) il me dis systématiquement que j'ai une erreur c'est à dire qu'il re,tre bien dans if(!is_file($dossier.$fichier)) donc il trouve bien que le fichier n'existe pas mais ensuite il ne le monte pas il me mets erreur. Si je passe toujours dans cette fonction mais que je change juste le nom du dossier où il doit transférer et bien là ça marche !!! est-ce qu'il n'y aurait pas un problème d'autorisation au niveau de l'écriture dans un dossier avec mandriva ? je ne sait pas voici exactement mon code:
if(!is_file($dossier.$fichier)) //le fichier n'existe pas
{
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...*/
{
echo 'Upload du fichier ---> ' . $fichier . " effectué avec succès";
$Wmax = $_POST['largeur'];
$Hmax = $_POST['hauteur'];
$rep_Dst = $dossier;
$img_Dst = $fichier;
$rep_Src = $dossier;
$img_Src = $fichier;
}
else //Sinon (la fonction renvoie FALSE).
{
echo "news ---> " . $fichier . " erreur au transfert";
}
}
else //Sinon (la fonction renvoie FALSE).
{
echo "news ---> " . $fichier . " déjà transféré, chapitre créé dans base ...";
}
Encore merci pour votre aide
if(!is_file($dossier.$fichier)) //le fichier n'existe pas
{
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...*/
{
echo 'Upload du fichier ---> ' . $fichier . " effectué avec succès";
$Wmax = $_POST['largeur'];
$Hmax = $_POST['hauteur'];
$rep_Dst = $dossier;
$img_Dst = $fichier;
$rep_Src = $dossier;
$img_Src = $fichier;
}
else //Sinon (la fonction renvoie FALSE).
{
echo "news ---> " . $fichier . " erreur au transfert";
}
}
else //Sinon (la fonction renvoie FALSE).
{
echo "news ---> " . $fichier . " déjà transféré, chapitre créé dans base ...";
}
Encore merci pour votre aide
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
21 déc. 2009 à 14:19
21 déc. 2009 à 14:19
essaie ce code :
evite de trop étaler ton code ca devient illisible après
if(is_file($dossier.$fichier)) echo "news ---> " . $fichier . " déjà transféré, chapitre créé dans base ..."; else if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) { echo 'Upload du fichier ---> ' . $fichier . " effectué avec succès"; $Wmax = $_POST['largeur']; $Hmax = $_POST['hauteur']; $rep_Dst = $dossier; $img_Dst = $fichier; $rep_Src = $dossier; $img_Src = $fichier; } else echo "news ---> " . $fichier . " erreur au transfert";
evite de trop étaler ton code ca devient illisible après
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
21 déc. 2009 à 16:17
21 déc. 2009 à 16:17
Non j'ai toujours pareil erreur au transfert mais j'ai écris un autre topic parce que je me demande si j'ai pas un problème lié à mandriva si tu veux regarder ce que j'ai posté à ce propos , merci pour ton aide
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
21 déc. 2009 à 19:16
21 déc. 2009 à 19:16
j'ai lu ton post pour mandriva
mais la question n'est pas là. la première fois que tu exécutes le script est ce que le fichier arrive bien dans le dossier?
que contiennent tes variables $dossier et $fichier
ensuite as tu mis enctype="multipart/form-data" dans la déclaration de ton formulaire?
sinon essaie d'utiliser cette fonction :
les arguments :
1 - $nom_fichier : correspond au name de ton formulaire et à $_FILES['ici c'est $nom_fichier'].
2 - $destination : correspond au dossier de destination.
3 - $nom_fichier_renomme : correspond au nom que tu veux donner au fichier si tu veux forcer un nom [optionnel]
4 - $maxsize : correspond à la taille max du fichier en octet [optionnel]
5 - $extensions : tableaux des extensions autorisé par exemple array('png','jpg','jpeg','gif') pour des images [optionnel]
mais la question n'est pas là. la première fois que tu exécutes le script est ce que le fichier arrive bien dans le dossier?
que contiennent tes variables $dossier et $fichier
ensuite as tu mis enctype="multipart/form-data" dans la déclaration de ton formulaire?
sinon essaie d'utiliser cette fonction :
function uploader($nom_fichier,$destination,$nom_fichier_renomme=NULL,$maxsize=false,$extensions=false) { if(!isset($_FILES[$nom_fichier]) || $_FILES[$nom_fichier]['error'] > 0) return false; if(!is_uploaded_file($_FILES[$nom_fichier]['tmp_name'])) return false; if($maxsize !== false && $_FILES[$nom_fichier]['size'] > $maxsize) return false; $ext = strtolower(substr(strrchr($_FILES[$nom_fichier]['name'],'.'),1)); if($extensions !== false && !in_array($ext,$extensions)) return false; if(is_null($nom_fichier_renomme)) { $nom_fichier_renomme = $_FILES[$nom_fichier]['name']; $nb = '-'.(strlen($ext)+1); $nom_fichier_renomme = substr($nom_fichier_renomme,0,$nb); } if($destination == '') $destination = '.'; $destination_final = $destination . '/' . $nom_fichier_renomme . '.' . $ext; $upload = move_uploaded_file($_FILES[$nom_fichier]['tmp_name'],$destination_final); if($upload) return array('nom' => $nom_fichier_renomme, 'extension' => $ext, 'size' => $_FILES[$nom_fichier]['size']); else return false; }
les arguments :
1 - $nom_fichier : correspond au name de ton formulaire et à $_FILES['ici c'est $nom_fichier'].
2 - $destination : correspond au dossier de destination.
3 - $nom_fichier_renomme : correspond au nom que tu veux donner au fichier si tu veux forcer un nom [optionnel]
4 - $maxsize : correspond à la taille max du fichier en octet [optionnel]
5 - $extensions : tableaux des extensions autorisé par exemple array('png','jpg','jpeg','gif') pour des images [optionnel]
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
21 déc. 2009 à 22:50
21 déc. 2009 à 22:50
Bonsoir, pour répondre à tes questions:
1) oui j'ai déjà exécuté le script et le fichier est bien arrivé dans le dossier.
2) $dossier = /var/www/html/site_piauplongee/commun/news/
3) $fichier = thumb_1.jpg
4) dans la déclaration de mon formulaire j'ai bien : enctype="multipart/form-data"
Voilà; je n'arrive plus à monter le fichier thumb_1.jpg dans le dossier /var/www/html/site_piauplongee/commun/news/
je sors systématiquement par erreur au transfert qui est affiché quand la fonction move_uploaded_file renvoie false.
Je vais maintenant mettre en place ton code et je te tiens au courant. Merci
1) oui j'ai déjà exécuté le script et le fichier est bien arrivé dans le dossier.
2) $dossier = /var/www/html/site_piauplongee/commun/news/
3) $fichier = thumb_1.jpg
4) dans la déclaration de mon formulaire j'ai bien : enctype="multipart/form-data"
Voilà; je n'arrive plus à monter le fichier thumb_1.jpg dans le dossier /var/www/html/site_piauplongee/commun/news/
je sors systématiquement par erreur au transfert qui est affiché quand la fonction move_uploaded_file renvoie false.
Je vais maintenant mettre en place ton code et je te tiens au courant. Merci
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
21 déc. 2009 à 23:22
21 déc. 2009 à 23:22
Re bonsoir, c'est pareil avec ta fonction il ne monte pas le fichier, je comprends pas, désolé ça marche pas j'ai vérifié que j'avais bien ce qu'il faut dans $nom_fichier et $destination ça c'est bon mais j'ai toujours return false
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
21 déc. 2009 à 23:26
21 déc. 2009 à 23:26
je précise qu'actuellement je travaille en local sur apache pour tester l'appli
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
22 déc. 2009 à 02:22
22 déc. 2009 à 02:22
Bon, il n'y a rien à faire j'ai essayé plussieurs code mais ça ne marche toujours pas, il y a des discutions sur le net à propos de permissions au niveau du répertoire sur lequel je veux écrire des histoires de chmod mais là si quelqu'un pouvait m'aider ? je suis coincé merci pour votre aide
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
22 déc. 2009 à 10:08
22 déc. 2009 à 10:08
Bonjour, est-ce qu'il est possible de savoir pourquoi la fonction move_uploaded_file ne marche pas par affichage d'un message d'erreur, si oui merci de me dire comment je peux faire car je suis toujours planté avec une fonction qui a marché et qui ne marche plus !!!! pour le moment je travaille en local sur mandriva, merci encore de bien vouloir m'aider
Utilisateur anonyme
22 déc. 2009 à 14:57
22 déc. 2009 à 14:57
je n ai pas de problème pour uploader sous mandriva cela doit etre un probleme de droits d'acces
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
22 déc. 2009 à 18:50
22 déc. 2009 à 18:50
Bonjour, je vais continuer mes tests en local sous mandriva, mais est-ce qu'il y a une log d'erreurs qui me permettrait d'avoir un message d'erreur si oui à quel endroit je peux trouver ça sinon, est-ce qu'
il y aurait une fonction php qui me permettrait d'avoir ce message d'erreur, ced qui me permettrait peut-être d'avancer parce que là je sais que la fonction move_uploaded_file ne marche pas mais je n'en sais pas plus. Merci pour votre aide.
il y aurait une fonction php qui me permettrait d'avoir ce message d'erreur, ced qui me permettrait peut-être d'avancer parce que là je sais que la fonction move_uploaded_file ne marche pas mais je n'en sais pas plus. Merci pour votre aide.
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
23 déc. 2009 à 02:52
23 déc. 2009 à 02:52
Bonsoir, bonne nuit plutôt, il est 2H30 du matin s'il vous plait je craque voici mon code
if(!is_file($dossier.$fichier))
{
if(move_uploaded_file($tmp_file, $dossier.$fichier))
{
echo 'Upload du fichier ---> ' . $fichier . " effectué avec succès";
}
else
{
echo "fichier ---> " . $fichier . " erreur au transfert";
}
}
else
{
echo "fichier ---> " . $fichier . " déjà transféré, chapitre créé dans base ...";
}
Voici ce que j'ai dans mes variables:
1) $tmp_file = /var/tmp/phpKhsKNe
2) $dossier = /var/www/html/site_piauplongee/commun/news/
3) $fichier = drapeau_anglais.jpg
et je n'arrive toujours pas à uploader mon fichier je sors avec le message fichier ---> drapeau_anglais.jpg erreur au transfert
S'il vous plait qu'est-ce que je peux faire, où est mon erreur ? je suis en local sur mon disque même pas chez mon hébergeur mais comment je peux savoir où est mon problème ?
Les droit d'accès sur mon dossier news sont les suivants : drwxrwxr-x je ne sais pas exactement ce que ça veut dire mais j'imagine read write rewrite est-ce que mon dossier poserait problème comment puis-je faire svp ? je ne comprends plus rien si vous pouviez au moins me dire comment je peux savoir qu'est-ce qui pose problème, j'ai lu des histoire de chmod 0777 mais là je ne sais pas ce que c'est, si vous pouviez m'aider merci
if(!is_file($dossier.$fichier))
{
if(move_uploaded_file($tmp_file, $dossier.$fichier))
{
echo 'Upload du fichier ---> ' . $fichier . " effectué avec succès";
}
else
{
echo "fichier ---> " . $fichier . " erreur au transfert";
}
}
else
{
echo "fichier ---> " . $fichier . " déjà transféré, chapitre créé dans base ...";
}
Voici ce que j'ai dans mes variables:
1) $tmp_file = /var/tmp/phpKhsKNe
2) $dossier = /var/www/html/site_piauplongee/commun/news/
3) $fichier = drapeau_anglais.jpg
et je n'arrive toujours pas à uploader mon fichier je sors avec le message fichier ---> drapeau_anglais.jpg erreur au transfert
S'il vous plait qu'est-ce que je peux faire, où est mon erreur ? je suis en local sur mon disque même pas chez mon hébergeur mais comment je peux savoir où est mon problème ?
Les droit d'accès sur mon dossier news sont les suivants : drwxrwxr-x je ne sais pas exactement ce que ça veut dire mais j'imagine read write rewrite est-ce que mon dossier poserait problème comment puis-je faire svp ? je ne comprends plus rien si vous pouviez au moins me dire comment je peux savoir qu'est-ce qui pose problème, j'ai lu des histoire de chmod 0777 mais là je ne sais pas ce que c'est, si vous pouviez m'aider merci
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
23 déc. 2009 à 11:48
23 déc. 2009 à 11:48
Bonjour, par rapport à mon problème de move_uploaded_file qui ne marche pas sous mandriva, j'ai une info supplémentaire qui s'adresse plutôt aux spécialistes de mandriva, je viens d'envoyer tout les fichiers du siet que je suis entrain de créér et de tester sous windows, la fonction move_uploaded_file sous windows marche très bien !!!!!! est-ce que quelqu'un pourrait m'éclairer, je pense que ce doit être un problème d'autorisations sur mandriva mais je ne sais pas quoi faire. Je vais poster également sur le forum linux.
Si vous pouviez m'aider ? merci beaucoup car c'est la galère.
Si vous pouviez m'aider ? merci beaucoup car c'est la galère.
Utilisateur anonyme
23 déc. 2009 à 13:14
23 déc. 2009 à 13:14
en haut de la page tu as une petite enveloppe cliques dessus