Problème upload fichier en PHP

Résolu/Fermé
pedro68 Messages postés 6 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 19 septembre 2012 - 19 sept. 2012 à 20:12
 Utilisateur anonyme - 19 sept. 2012 à 22:37
Bonjour, j'ai récupérer un code PHP d'upload de fichier PHP que voici:

<?
// Taille maximum
$MAX_FILE_SIZE = 150000;

// Dossier de destination du fichier
$folder = "./";

// Tableau array des différents types
$allowed_types = array("image/bmp", "image/gif", "image/pjpeg", "image/jpeg", "image/jpg", "multipart/x-zip", "video/msvideo");

// Variables récupérée par methode POST du formulaires
$fname = $HTTP_POST_FILES['fichier']['name'];
$ftype = $HTTP_POST_FILES['fichier']['type'];
$fsize = $HTTP_POST_FILES['fichier']['size'];
$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];

// Diverses test afin de savoir si :
// Le format de fichier correspond à notre tableau array
if(!in_array($ftype, $allowed_types)){$error = 1;}

// La taille du fichier n'est pas dépassée
if($fize > $MAX_FILE_SIZE){$error = 2;}

// Le fichier n'existe pas déjà
if(file_exists($folder."m_".$fname)){$error = 3;}

// Si tout va bien, c'est bien déroulé
if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;}

// Switch servant simplement à la gestion des erreures
switch($error){
case'0':
echo("Fichier correctement envoyé.");
break;
case'1':
echo("Format de fichier incorrecte.");
break;
case'2':
echo("Fichier trop volumineux.");
break;
case'3':
echo("Fichier déjà existant.");
break;
}
?>



Seulement quand je modifie la partie du code du dossier de destination, je remplace donc le "./" par "upload" qui est le nom du dossier que j'ai créer sur le FTP et malgré cela tous les fichiers que j'uploade sont stockés dans la racine ( la ou se trouve le fichier PHP )

Je ne comprend pas... Merci d'avance de m'aider à élucider mon problème :D



A voir également:

2 réponses

mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 311
19 sept. 2012 à 21:59
As-tu essayé de remplacer ./ par upload/ ? ( le slash est important dans ce cas si, car si tu ne l'as pas mis, ca peut être la cause du problème )
1
Utilisateur anonyme
19 sept. 2012 à 22:37
Bonjour

C'est sûr, le chemin que tu mets dans $folder doit se terminer par un /

Mais il y a deux autres choses qui me choquent :
if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;} 

- Le fichier téléchargé doit être déplacé avec move_uploaded_file, pas recopié avec copy
- Il manque un else pour donner une valeur à $error si le problème intervient à ce niveau.
1