fin inattendu dans mon code php

R4N7OINE
Invité n'ayant pas de compte PHPfrance

26 mai 2015, 16:54

Bonjour,
Voilà mon problème:
J'ai écrit un code pour permettre à mon serveur de récupérer un fichier envoyé par un client sauf que après avoir été chercher sur internet je n'ai toujours pas trouvé la solution à mon problème . Voici mon code :
<?php
if ($_FILES[ 'tinyrank' ] [ 'error' ] > 0) $erreur = "erreur lors du transfert";
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
$extension_upload = strtolower( strrchr($_FILES[ 'tinyrank' ] [ 'name' ], '.') );
if ( in_array($extension_upload,$extensions_valides) ) echo "Extension correcte";
$nomFichier = $_FILES[ 'tinyrank' ][ 'name' ] ;
$newNomFichier = 'tinyrank';
rename($nomFichier, $newNomFichier);
$resultat = move_uploaded_file($_FILES[ 'tinyrank' ]['tmp_name'],"../image/);
if ($resultat) echo 'good';
?>
Merci d'avance pour vos réponse.

Mammouth du PHP | 688 Messages

26 mai 2015, 17:04

je pense que ces modifs sont nécessaires :
//rename($nomFichier, $newNomFichier);
$resultat = move_uploaded_file($_FILES[ 'tinyrank' ]['tmp_name'],"../image/$newNomFichier");

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 mai 2015, 17:11

Comme le montre la coloration syntaxique du code, il te manque une guillemet dans le move_uploaded_file après "..image/
C'est pour cela que php génère une erreur, puisqu'il considère que tout ce qui suit (jusqu'à la prochaine guillemet qu'il ne trouve pas) est dans ta chaine.

Ceci étant, comme l'indique tof73, il faudrait également virer le rename (qui ne sert à rien puisque le fichier n'a pas encore été récupéré du répertoire temporaire d'upload) et préciser le nom que tu veux donner au fichier lorsque tu le déplaces avec le move_uploaded_file.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 5 Messages

26 mai 2015, 17:12

Merci beaucoup, grâce à ces modifs mon code marche correctement :))))

Petit nouveau ! | 5 Messages

26 mai 2015, 17:14

Mais alors où je met le rénale qui me sert à avoir un nom spécifique pour le fichier optenu?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 mai 2015, 21:36

En fait, le fichier est uploadé dans un répertoire temporaire avec un nom temporaire ($_FILES[ 'tinyrank' ]['tmp_name'])

La fonction move_upload_file te permet de déplacer le fichier uploadé depuis le répertoire temporaire vers le répertoire de ton choix, mais elle permet également de nommer le fichier (puisque tu indiques le nom du répertoire et du fichier quand tu le déplaces).

Il n'y a donc aucun intérêt à utiliser la fonction rename() dans ce cas ci :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...