Renomme un fichier a uploader

Résolu
sofiane3993 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -  
sofiane3993 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je souhaiterai savoir si il est possible d'insérer automatiquement l'année et le mois quand l'utilisateur va insérer son fichier ou si il faut qu'il le renomme auparavant.
par exemple : 201501_fichier.pdf
j'ai trouver ce code mais peut ton faire ce que je souhaite

<?php
$fichier = $_FILES['fichier']['name'];
$content_dir = 'upload/';
$tmp_file = $_FILES['fichier']['tmp_name'];
 
$file_type = $fichier;
$file_type_length = strlen($file_type) - 3;
$file_type = substr($file_type, $file_type_length);
$file_type = strtolower($file_type);
 
 
$nouveau_nom = time().'.'.$file_type;
move_uploaded_file($tmp_file, $content_dir . $nouveau_nom);
?>



A voir également:

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Si tu veux l'année et le mois au lieu de l'heure... tu peux remplacer
$nouveau_nom = time().'.'.$file_type;

Par
$nouveau_nom = date('ym').'.'.$file_type;
0
sofiane3993 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   2
 
je vais essayer
0
sofiane3993 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   2
 
euh j'ai ce message d'erreur qui s'affiche Notice: Array to string conversion in C:\wamp\www\final\formulaire.php on line 34
Mais a vrais dire je ne vois pas ou est le problème
voila mon code :

<html>
    <body>
    <head>
        <title>fin de l'upload</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
            <?php

		// Ici on teste le fait que le fichier a bien été envoyé et si il n'y a pas d'erreur
		if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
			
                    {
                    /* La ligne de code ci dessous permet de voir si le fichier n'est pas trop lourd
                    * if ($_FILES['monfichier']['size'] <= 1000000)
                    * Attention ici 1000000 correspond a 1Mo soit 1 000 000 octets ainsi si le ficheir dépasse 1Mo le fichier est refusé 
                    */
                    {
			// Vérification de l'extension du fichier ici .pdf
			$infosfichier = pathinfo ($_FILES ['monfichier']['name']);
			$extension_upload = $infosfichier['extension'];
			$extensions_autorisees = array ('pdf');
                                
                                
                                
                            if (in_array ($extension_upload, $extensions_autorisees))
                                {
                                    //Validation du transfert de fichier
                                        // Le Fichier existe sur le serveur si oui alors impossble de transferer
                                        //if(file_exists('uploads/' . $_FILES['monfichier']['name']))
                                        //{
                                        //die('Impossible de transférer votre fichier car le nom de celui existe déjà.');
                                        //}
                                $nouveau_nom = date('ym').'.'.$infosfichier;
                                move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' .basename ($nouveau_nom));
                                    echo "votre fichier a été transférer<br /><br />";	echo "nous sommes le : ". strftime ("%d %m %Y ", filemtime("uploads/"));			
                                }
                            else 
                                echo "transfert impossible car votre fichier n'a pas la bonne extension "
                                . "nous rappelons que les fichiers pouvant être transférer sont des pdf <br> merci de votre compréhension<br /><br />";
                    }
                    }   
            ?>
</body>
</html> 

0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

La fonction php pathinfo() retourne un tableau, ta variable $infosfichier est donc un tableau.

Si tu veux concaténer l'extension du fichier, tu dois accéder à l'élément 'extension' de ce tableau :
$nouveau_nom = date('ym') . '.' . $infosfichier['extension'];


Bonne journée
0
sofiane3993 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   2
 
bonjour,

d'accord merci :)
je vais essayer cela
0
sofiane3993 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   2
 
bon jusque la ok mais j'ai encore une question comment puis je garger quand meme le nom initial du fichier par exemple tout en rejoutant l'année et le mois .

par exemple fichier.pdf devien 201501_fichier.pdf
0
sofiane3993 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   2
 
ou alors je fais une lettre d'info aux utilisateur de comment ecrire le nom de leur fichier ??
qu'en pensez vous??
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Ça dépend pour qui est destiné ton script, mais en général on évite de se fier à l'utilisateur, c'est la principale source d'erreur ;)
Sinon :
$nouveau_nom = date('ym') . '_' . $_FILES['monfichier']['name'] . '.' . $infosfichier['extension'];
0
sofiane3993 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   2
 
daccord merci beaucoup et encore une petite question pour le moment l'année se met avec les deux dernier chiffre on peut mettre l'année complète ou pas par exemple on a pour le moment 1501_nomfichier.pdf est que c'est possible de faire afficher 201501_nomfichier.pdf apres si ce n'est pas possible ce n'est pas grave car vous m'avez deja bien aidé
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
$nouveau_nom = date('Ym') . '_' . $_FILES['monfichier']['name'] . '.' . $infosfichier['extension'];


Tous les formats possibles de la fonction date() sont disponibles ici : https://www.php.net/manual/fr/function.date.php
0
sofiane3993 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   2
 
oh merci merci merci, merci de tout coeur j'ai cru que j'allais devenir fou avec ces codes et merci pour le lien car je ne connai pas encore toute les subtilité des codes je vais de ce pas regarder tout cela :)
0