IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] Probleme de renommage lors d'un upload


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [Upload] Probleme de renommage lors d'un upload
    Bonjour a tous, et merci d'avance pour votre aide.

    Je vous explique mon probleme :

    - J'ai creer un fichier php d'upload qui marche bien dans le principe, mais dans mon dossier de destination finale, je n'ai pas le fichier tel quel comme il est envoyé.

    Plus clairement je prend un exemple: Si j'envoi un fichier nommé alex.gif via mon formulaire, j'ai un fichier nommé "1" de type fichier dans le dossier de destination. Si je le renomme a la main en "alex.gif", et bien j'ai ma photo de départ!
    Donc les données ne sont pas modifiées lors de l'upload, mais la photo au final n'a plus le meme nom qu'au départ et elle est de type fichier au lieu de .gif .

    Pouvez vous m'aider a faire en sorte qu'il soit renommé automatiquement ? Au but d'avoir "alex.gif" directement dans mon dossier final si j'envoi le fichier "alex.gif" ?

    Je vous donne mon code de l'upload :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
     
    if ((isset($_FILES['pjointe'])) && ($_FILES['pjointe'] != ""))
    {
    	$erreur = "";
    	$extension_ok = array('png', 'gif', 'jpg', 'jpeg'); // Gestion des extensions autorisées
    	$taille_max = 2000000; //Taille max : 2MO
    	$dest_dossier = 'pjs/'; // Je test en local sous wamp la
     
    	if(in_array( substr(strrchr($_FILES['pjointe']['name'], '.'), 1), $extension_ok )) // Si extension ok apres le nom de fichier ..
    	{ 
    		if((filesize($_FILES['pjointe']['tmp_name'])) <= $taille_max) // Si le fichier, ne depasse pas la taille max
    		{ 
    			if(file_exists($_FILES['pjointe']['tmp_name'])) // Si le fichier existe ds le dossier temp du serveur
    			{ 
    				$dest_fichier = basename($_FILES['pjointe']['name']);
    				$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    				$dest_fichier = preg_match('/([^.a-z0-9]+)/i', '_', $dest_fichier);
    				move_uploaded_file($_FILES['pjointe']['tmp_name'], $dest_dossier . $dest_fichier);
    			}
    			else
    			{
    			$erreur.= "Problème d'upload de la pièce jointe<br />";
    			}
    		} else{ $erreur.= "Le fichier depasse la taille autorisée<br />";}
    	} else{ $erreur.= "L'extension du fichier joint n'est pas conforme, merci d'envoyer un fichier de type png, gif, jpg ou jpeg<br />"; }
    } else {$erreur.= "Champ de la piece jointe vide<br />"; }
     
    echo '<p>'.$erreur.'</p>';
     
       // Connexion a la base + envoi des données dans la table
    include("connexion.php"); 
    connexion(); // renvoi a mon "connexion.php" et la fonction dedans
    $sql = "INSERT INTO pierre(id, nom, prenom) VALUES('', '$_POST[nom]', '$_POST[prenom]')";
    mysql_query($sql) or die(mysql_error());
     
    ?>
     
    <html>
    	<body>
    		<form method="POST" action="index.php" enctype="multipart/form-data">
    			<input type="hidden" name="max_file_size" value="2000000" />
    				<fieldset>
    					<legend>Formulaire</legend><br />
    						Nom: <input name="nom" type="text" id="nom"><br /><br />
    						Prenom: <input name="prenom" type="text" id="prenom"><br />
    						Piece jointe: <input name="pjointe" type="file" id="pjointe"><br />
    							<center><input type="submit" name="envoi" value="Envoyer" /></center>
    					</legend>
    				</fieldset>
    		</form>
    	</body>
    </html>
    Merci d'avance pour votre aide

  2. #2
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Je ne pas sur de comprendre ce que vous essayez de faire.
    C'est $dest_fichier qui ne contient pas le bon nom de fichier au final.

    Vous n'utilisez pas la fonction strstr() correctement, voici le manuel:
    http://php.net/strstr

    Vous voulez probablement utiliser des tableaux avec str_replace() à la place, je vous invite à lire le manuel:
    http://php.net/array
    http://php.net/str_replace

    Vous utilisez preg_match() de manière incorrecte, à mon avis, c'est de preg_replace() dont vous avez besoin; je vous invite à lire le manuel:
    http://php.net/preg_match
    http://php.net/preg_replace

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    je te conseille de récupérer pathinfo() pour les informations de pjointes et de modifier ton if(in_array(substr(etc..........))

    C'est substr() qui m'a géné dans ton script

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Grace a vos conseils, j'ai cogité, et j'ai changé ma facon de faire . Maintenant ca marche ! avec le code suivant si ca peut en aider quelques uns :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
     
    if ((isset($_FILES['pjointe'])) && ($_FILES['pjointe'] != ""))
    {
    	$erreur = "";
    	$extension_ok = array('png', 'gif', 'jpg', 'jpeg'); // Gestion des extensions autorisées
    	$taille_max = 20000000; //Taille max : 2MO
    	$dest_dossier = 'pjs/'; // Je test en local sous wamp la
     
    	if(in_array(substr(strrchr($_FILES['pjointe']['name'], '.'), 1), $extension_ok )) // Si extension ok apres le nom de fichier ..
    	{
    		if((filesize($_FILES['pjointe']['tmp_name'])) <= $taille_max) // Si le fichier, ne depasse pas la taille max
    		{ 
    			if(!@move_uploaded_file($_FILES['pjointe']['tmp_name'], $dest_dossier.basename($_FILES['pjointe']['name']))){
    				$erreur.= "Problème d'upload de la pièce jointe<br />";
    			}
    		} else{ $erreur.= "Le fichier depasse la taille autorisée<br />";}
    	} else{ $erreur.= "L'extension du fichier joint n'est pas conforme, merci d'envoyer un fichier de type png, gif, jpg ou jpeg<br />"; }
    } else {$erreur.= "Champ de la piece jointe vide<br />"; }
     
    echo '<p>'.$erreur.'</p>';
     
    	// Connexion a la base + envoi des données dans la table
    	include("connexion.php"); 
    	connexion(); // renvoi a mon "connexion.php" et la fonction dedans
    	$sql = "INSERT INTO pierre(id, nom, prenom) VALUES('', '$_POST[nom]', '$_POST[prenom]')";
    	@mysql_query($sql) or die(mysql_error());
     
    ?>
     
    <html>
    	<body>
    		<form method="POST" action="index.php" enctype="multipart/form-data">
    			<input type="hidden" name="max_file_size" value="2000000" />
    				<fieldset>
    					<legend>Formulaire</legend><br />
    						Nom: <input name="nom" type="text" id="nom"><br /><br />
    						Prenom: <input name="prenom" type="text" id="prenom"><br />
    						Piece jointe: <input name="pjointe" type="file" id="pjointe"><br />
    							<center><input type="submit" name="envoi" value="Envoyer" /></center>
    					</legend>
    				</fieldset>
    		</form>
    	</body>
    </html>
    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Upload] gestion des erreurs lors d'un upload de fichiers
    Par sarah65536 dans le forum Langage
    Réponses: 6
    Dernier message: 22/04/2009, 09h08
  2. [Upload] Probleme de syntaxe lors d'un upload
    Par pierrot10 dans le forum Langage
    Réponses: 5
    Dernier message: 01/04/2008, 21h32
  3. [Upload] Problèmes de chmod lors d'un upload
    Par Ludo75 dans le forum Langage
    Réponses: 7
    Dernier message: 29/12/2006, 12h15
  4. [Upload] Erreur de mémoire lors d'un upload
    Par alpking dans le forum Langage
    Réponses: 3
    Dernier message: 10/11/2006, 10h35
  5. [Upload] Erreur 'Action annulée' lors d'un upload
    Par SegmentationFault dans le forum Langage
    Réponses: 8
    Dernier message: 31/07/2006, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo