Accueil > Forum > > > > j'ai un bug dans mon script upload HELP!!!
j'ai un bug dans mon script upload HELP!!!
vendredi 22 septembre 2006 à 16:51:14 |
j'ai un bug dans mon script upload HELP!!!

ptiloup73
|
Voila j'ai fais un forumulaire d'upload avec un check de l'extention mais bon .. je ne comprends pas pourquoi il plante.. je débute en php donc je pense que l'erreur vient des if et elseif... mais j'ai besoin qu'on me corrige mon script... merci d'avance.
Mon forumulaire : [...] <form name="add_sfupload" method="post" action="add_sfupload_code.php" enctype="multipart/form-data"> <div align="center"> <table width="655" border="0" align="center" cellpadding="0" cellspacing="0" id="pagesfupload"> <tr> <td colspan="2"><span class="style1">Ajouter un fichier :</span></td> </tr> <tr> <td width="254"><input size="40" name="upload" type="file"></td> <td width="372"><div align="right"><input name="hidden" type="hidden" value="" size="50" maxlength="50" /></div></td> </tr> <tr> <td colspan="2"> <input name='annuler' type='reset' value='Annuler' /> <input name='upload' type='submit' value='Upload' /> </td> </tr> [...] </table></div> </form>
et voila mon Script... :
<?php if(isset($_FILES['upload'])) { unset($erreur); $nom = $_FILES['upload']['name']; $ext = '.'. substr(strrchr($nom, '.'), 1); $ext = strtolower($ext); // On passe l'extension en minuscules $ext = str_replace('.jpeg', '.jpg', $ext); // On remplace '.jpeg' par '.jpg' $nom = strtolower(str_replace(' ', '_', $nom)); // On remplace les espaces dans le nom du fichier par un underscore, et on met le nom en minuscules. $destination = ''; $max_file_size = 0;
if( !is_uploaded_file($tmp_file) ) { $erreur='Le fichier est introuvable'; } elseif($ext == '.jpg' OR $ext == '.png' OR $ext == '.jpeg') { $destination = 'images/'; $max_file_size = 1000000; if (!getimagesize($_FILES['upload']['tmp_name'])) { exit("GD n'a pas reconnu le fichier en tant qu'image, script interrompu."); } elseif( file_exists($_FILES['upload']['tmp_name'])) { exit("Fichier existant sur le serveur au mème nom!"); } elseif( filesize($_FILES['upload']['tmp_name']) > $max_file_size) { exit("Fichier existant sur le serveur au mème nom!"); } } elseif($ext == '.zip' OR $ext == '.rar') { $destination = 'download/'; $max_file_size = 100000000; if( file_exists($_FILES['upload']['tmp_name'])) { exit("Fichier existant sur le serveur au mème nom!"); } elseif( filesize($_FILES['upload']['tmp_name']) > $max_file_size) { exit("Fichier existant sur le serveur au mème nom!"); } } elseif( !move_uploaded_file($tmp_file, $content_dir . $name_file)) { $erreur='Impossible de copier le fichier dans $destination'; } if(!isset($erreur)) { move_uploaded_file($_FILES['upload']['tmp_name'],$destination.$nom.$ext)) $nom = $nom.$ext; exit("Envoi du fichier effectué avec succès. Adresse du fichier: <a href<A href='images/$nom'>'$nom'</A>"); } else{echo($erreur);} } ?>
Merci pour l'aide... d'avance.
|
|
vendredi 22 septembre 2006 à 17:30:44 |
Re : j'ai un bug dans mon script upload HELP!!!

ptiloup73
|
j'ai ajouter la variable :
<code> $tmp_file = $_FILES['upload']['tmp_name']; </code>
ici : <code> <?php if(isset($_FILES['upload'])) { unset($erreur); $nom = $_FILES['upload']['name']; ******ICI***** [...] </code>
et corriger ça : elseif( !move_uploaded_file($tmp_file, $content_dir . $name_file)) en : elseif( !move_uploaded_file($tmp_file, $content_dir . $nom))
mais toujours rien... snif help
|
|
vendredi 22 septembre 2006 à 22:23:02 |
Re : j'ai un bug dans mon script upload HELP!!!

darkduck
|
Tiens un petit cadeau, voici la classe que j'ai créée :
<?php
function upload($champ_files, &$nom_fichier_transfere, $repertoire_destination, &$message, $extensions_autorisees_array=array('pdf','jpg','jpeg','gif','png'), $taille_max_fichier=2000000, $chmod=755) { /*Fonction qui transfère un fichier sur le serveur. Retourne true si le transfert s'est déroulé correctement, false sinon.
Liste des paramètres : - $champ_files : $_FILES['nom_du_champ'] - $nom_fichier_transfere (donnée-resultat) : Nom que l'on veut donner au fichier transféré (modifié automatiquement si un fichier porte déjà le même nom) - $repertoire_destination : Chemin relatif du répertoire dans lequel on veut transférer le fichier - $message (donnée-resultat) : Message généré par lors du transfert - $extensions_autorisees : Tableau contenant la liste des extensions des fichiers autorisées - $taille_max_fichier : Taille maximale (en octets) autorisée pour le fichier à transférer (Aide : 1Ko = 1000 octets; 1Mo = 1000000 octets) - $chmod : Chmod du fichier transféré*/
/*Initialisations*/ $upload_reussi = false; $message = ''; $extension = $str_formats_autorises = '';
/*On vérifie que $nom_fichier_transfere et $repertoire_destination ne soient pas vides*/ if ($nom_fichier_transfere == '' OR $repertoire_destination == '') $message = 'Erreur : Vous devez préciser un nom à donner au fichier à transférer ainsi qu\'un répertoire de destination';
/*On vérifie que la taille du fichier à transférer n'est pas trop importante*/ elseif ($champ_files["size"] > $taille_max_fichier) //Si la taille de la fic est supérieure à la taille max { $taille_max_autorisee = $taille_max_fichier / 1000;
$message = 'Erreur : La taille du fichier que vous voulez transférer est trop grande.<br />'.br(). 'Taille maximale autorisée : '.$taille_max_autorisee.' Ko'; }
else //Aucune erreur pour le moment { /*On supprime les accents et caractèers spéciaux*/ $nom_fichier_transfere = clearStr($nom_fichier_transfere);
/*On récupère l'extension du fichier envoyé*/ $extension_fichier = substr(strchr($champ_files["name"],'.'),1);
/*On récupère la liste des formats autorisés et on vérifie si l'extension du fichier est autorisée*/ $extension_autorisee = false; //Initialisation
foreach ($extensions_autorisees_array as $extension) { $str_formats_autorises .= $extension.', ';
/*On vérifie si l'extension du fichier est autorisée*/ if (!$extension_autorisee AND $extension_fichier == $extension) $extension_autorisee = true; }
/*Suppression de la ,(virgule) à la fin de $str_formats_aurorises*/ $str_formats_autorises = implode(', ', $extensions_autorisees_array);
if (!$extension_autorisee) //Si le format du fichier n'est pas valide { $message = 'Erreur : Le fichier que vous voulez transférer ne porte pas une extension autorisée.<br />'.br(). 'Extension du fichier que vous voulez transférer : '.$extension_fichier.'<br />'.br(). 'Extenstions autorisées : '.$str_formats_autorises;
} else //Format valide { /*Si le fichier existe on le renomme de la forme nomDuFichier(X).extension*/
/*Initialisations*/ $i = 0; $extension = '.'.$extension_fichier; $nom_fichier_transfere = str_replace($extension,'',$nom_fichier_transfere);
/*On renomme le fichier tant qu'un fichier porant le même nom existe*/ while (file_exists($repertoire_destination.$nom_fichier_transfere.$extension)) { /*Suppression de l'éventuel (X) existant*/ $nom_fichier_transfere = str_replace('('.$i.')','',$nom_fichier_transfere);
/*On incrémente le compteur*/ $i++;
/*Ajout de (X)*/ $nom_fichier_transfere = str_replace($nom_fichier_transfere,$nom_fichier_transfere.'('.$i.')',$nom_fichier_transfere); }
/*Nom de destination final*/ $nom_fichier_transfere = $nom_fichier_transfere.$extension;
if (is_uploaded_file($champ_files["tmp_name"])) //Si le fichier a été uploadé correctement { /*On renomme le fichier avec le nom du fichier envoyé (nom éventuellement maj)*/ if (!rename($champ_files["tmp_name"], $repertoire_destination.$nom_fichier_transfere)) { $message .= "Envoi du fichier impossible"; } else //Transfert réussi { /*On modifie les chmod du fichier*/ chmod ($repertoire_destination.$nom_fichier_transfere,'0'.$chmod);
$upload_reussi = true; //Transfert réusssi
$message = "Le fichier a correctement été transféré !"; } } } } return $upload_reussi; } ?>
|
|
vendredi 22 septembre 2006 à 22:55:46 |
Re : j'ai un bug dans mon script upload HELP!!!

darkduck
|
Pour l'utiliser :
Ton formulaire :
<form name="add_sfupload" method="post" action="add_sfupload_code.php" enctype="multipart/form-data"> <div align="center"> <table width="655" border="0" align="center" cellpadding="0" cellspacing="0" id="pagesfupload"> <tr> <td colspan="2"><span class="style1">Ajouter un fichier :</span></td> </tr> <tr> <td width="254"><input size="40" name="upload" type="file"></td> <td
width="372"><div align="right"><input name="hidden"
type="hidden" value="" size="50" maxlength="50"
/></div></td> </tr> <tr> <td colspan="2"> <input name='annuler' type='reset' value='Annuler' /> <input name='upload' type='submit' value='Upload' /> </td> </tr> [...] </table></div> </form>
et tu appelles le script comme suit :
<?php
$champ_files = "upload"; $nom_fichier_transferre = "nouveauNom"; $repertoire_destination = "monRepertoire/"; $message = "";
$reussi = upload($champ_files, $nom_fichier_transfere, $repertoire_destination, $message);
if ($reussi) { echo "Le fichier s'appelle désormais $nom_fichier_transfere"; }
echo $message;
?>
|
|
vendredi 22 septembre 2006 à 23:30:11 |
Re : j'ai un bug dans mon script upload HELP!!!

ptiloup73
|
c'est une bonne base de travail.. mais si tu peux me dire comment faire pour pouvoir automatiser le fait que j'upload : un zip ou rar dans un dossier (upload) et les images dans un dossier (images), il faut encore que je puisse utiliser l'emplacement du fichier uploader comme une variable pour l'inscrire dans la base de donnée MySql... pour ça il faut que je puisse faire la différence entre les types de fichier mais sans passé par le type MIME... cf autre navigateur pas forcement les mème MIME... faire un code genre :
if isset blabl { [mes variables...]
if $ext == jpg or $ext == png { [variables...] } elseif $ext == zip or $ext == rar { [variables...] } else { exit ("Bad format files!")} } echo $mon_fichier = $destination/$fichier.$ext
mais impossible de faire ça je ne comprend pas...
|
|
samedi 23 septembre 2006 à 12:16:58 |
Re : j'ai un bug dans mon script upload HELP!!!

jean84
|
As-tu essayer les expressions regulieres ? Cela pourrait resoudre ton probleme !!
Exemple (pour les fichiers zip) :
$Regex = '`.*\.zip`i';
if ( preg_match($Regex, $FichierAUper) === true )
{
// ... traitement
}
T'as juste a change l'extension dans la regex pour pouvoir verifier les zip ou les png !
@++
|
|
dimanche 24 septembre 2006 à 18:35:41 |
Re : j'ai un bug dans mon script upload HELP!!!

ptiloup73
|
Pour jean84 je ne connais pas les expressions regulieres... je suis plus que nouveau avec le php...
Mais j'ai fini mon script.. il ne fonctionne toujours pas.. et la c'est moi qui bug lol
au moment du move_uploaded_file il ne fait rien... pourtant toutes mes variable fonctionne testée avec des echo svp si vous avez une solution est-ce en raport avec le fait que je suis en localhost ? merci. pour info voila mon script fini :
<?php if (empty($_POST['uploadname'])) { echo 'You must enter the number of the news.'; } else { if (!empty($_FILES['uploadfile']['name'])) { $file = basename($_FILES['uploadfile']['name']); $ext = strrchr($_FILES['uploadfile']['name'], '.'); $ext = substr($ext, 1); if (($ext == 'jpg') or ($ext == 'png')) { //echo 'ceci est une image'; $dest='images/'; } else { if (($ext == 'zip') or ($ext == 'rar')) { //echo 'ceci est une archive'; $dest='downlaod/'; } } echo '<p>', $dest ,'</p>'; echo '<p>', $file ,'</p>'; echo '<p>', $_FILES['uploadfile']['tmp_name'] ,'</p>'; move_uploaded_file($_FILES['uploadfile']['tmp_name'], $dest . $file); } else { // enlever les accents echo 'You must set the target file for uploading.'; } } ?>
|
|
dimanche 24 septembre 2006 à 19:21:26 |
Re : j'ai un bug dans mon script upload HELP!!!

ptiloup73
|
Réponse acceptée !
Problème résolut il fallait dans $dest que je mette le path sur '../images/' et non 'images/' vala... tt simple lol
|
|
Cette discussion est classée dans : fichier, file, upload, files, ext
Répondre à ce message
Sujets en rapport avec ce message
problème upload [ par jipe32 ]
Bonjour j'ai téléchargé un script d'upload sur Comscripts.com et je l'ai adapté à mon site, mais j'ai un problème que je n'arrive pas à résoudre. ça s
Gros problème d'upload d'image...encore un [ par kenru ]
Bonjour à tous, voilà j'ai un petit souci pour un upload d'image.//Fonction d'upload$nom_fichier = $_FILES['userfile']['name'];$tmp_fichier = $_FILES[
move_upload_files [ par simonlartiste ]
Bonjour à tous.Quelqu'un suarait il comment uploader un fichier et le placer dans un repertoire qui ne se trouve pas dans la même racineJ execute le s
Erreur Upload [ par Soul EX ]
Warning: move_uploaded_file(./photos/evenements/main.jpg): failed to open stream: No such file or directory in /home/users/u/*/www/maj/envoi/evenemen
[prb] upload fichier [ par Renus02 ]
bonjour j'ai un petit probleme avc l'upload de fichier, mon code : formulaire: <b
Securiser un upload !! [ par SnOOpss ]
Bonjour je doit faire un systeme d'upload sur un site, sans inscriptions, donc le premier venu pourra uploader des fichiers sur le serveur et je voula
(upload d'image) marche une fois sur deux??? [ par kenru ]
Bonjour à tous. Dans un dernier post précédemment écrit par moi même je réussi, grâce à l'aide de certains d'entre vous, à résoudre mon problème d'upl
files upload [ par Hades51 ]
Bonjour,Est t'il possible de faire un multiplie file upload à partir d'un seul input type="file" ?Merci
jpbm d'upload d'immge aidez moi svp !! [ par razatajm16 ]
bjr alor voici mon pbm en fait , j'ai un script d'upload upload.php3dont voici la source:if ($file_name == "none") { print "Spécifier un fichier à env
Upload vide ? [ par SDK_akira ]
Bonjour J'utilise un script d'upload que j'ai trouvé sur le net et qui marche très bien sur d'autre site néanmoins la bizarement le fichier uploadé
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
XML ET PHPXML ET PHP par karouani
Cliquez pour lire la suite par karouani RE : GOOGLE MAPRE : GOOGLE MAP par inwebo
Cliquez pour lire la suite par inwebo
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|