Changer le nom d'un fichier uploadé
Posté : 22 févr. 2007, 19:01
Slt,
voici le code que j'ai :
je suis entraint de me creusé la tete pour savoir ou dois-je placer cette syntax pour quelle puisse marché
j'ai fais un essaie en montant les déclarations de variable en haut de page, mais la je me retrouve avec des variable qui ne sont pas encore définie ??? (message erreur)
Comment puis-je faire ?
voici le code que j'ai :
<?php
// UPLOAD DE FICHIER
/*
****************************************************************
* VERIFICATION AVANT UPLOAD *
****************************************************************
*/
if(isset($_FILES['PDF'])) // si la variable PDF existe
{
// paramettre
unset($erreur); // Detruire la variable $erreur (ne pas affiché la variable)
$extensions_ok = array('pdf'); // Autorisé juste les fichiers PDF
$taille_max = 4194304; // avec un poid MAXIMUM de 4Mo (1Mo = 1000000)
$dest_dossier = 'PDF_programme/'; // Chemin du dossier qui vas recevoir les PDF... utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
// vérifications
if( !in_array( substr(strrchr($_FILES['PDF']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Seul les fichiers au <strong>format PDF<strong/> sont accepté, veuillez recommencer !';
}
elseif( file_exists($_FILES['PDF']['tmp_name'])and filesize($_FILES['PDF']['tmp_name']) > $taille_max)
{
$erreur = 'Le fichier ne doit pas dépasser <strong>4 Méga</strong>, si vous souhaitez le réduire contacté "Stephane" !';
}
/*
****************************************************************
* ENVOIE DU FICHIER *
****************************************************************
*/
// si la variable ERREUR n'existe pas
if(!isset($erreur))
{
// formatage du nom du fichier / Sépare le nom du fichier et le nom du dossier
$dest_fichier = basename($_FILES['PDF']['name']);
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['PDF']['tmp_name'], $dest_dossier . $dest_fichier);
/*
****************************************************************
* CONNECTION A LA BASE DE DONNEE *
****************************************************************
*/
// connection a la base de donnée
include ("../include/connectBD.inc.php");
// création des variable depuis le formulaire de saisie
$congres = strtoupper($_POST['congres']); //mettre ne majuscule
$mois =$_POST['mois'];
$debut =$_POST['date_debut'];
$fin =$_POST['date_fin'];
$ville =$_POST['ville'];
$pays =$_POST['pays'];
$commercial =$_POST['commercial'];
$inscription =$_POST['inscription'];
$budget =$_POST['budget'];
$conferencier =$_POST['conferencier'];
$presse =$_POST['presse'];
$soutien =$_POST['soutien'];
$nom_pdf = $_FILES['PDF']['name'];
$poid_pdf = $_FILES['PDF']['size'];
$chemin_pdf = $dest_dossier.$_FILES['PDF']['name'];
// Convertion de la date debut
$date_fr_debut = $debut;
$date_us_debut = implode('-',array_reverse (explode('/',$date_fr_debut)));
// Convertion de la date fin
$date_fr_fin = $fin;
$date_us_fin = implode('-',array_reverse (explode('/',$date_fr_fin)));
// creation d'une variable qui demande d'inserer les donnée dans la BD
$sql = "INSERT INTO agenda
VALUES
('','$congres','$mois','$date_us_debut','$date_us_fin','$ville','$pays','$commercial','$inscription','$budget','$conferencier','$presse','$soutien','$nom_pdf','$poid_pdf','$chemin_pdf')";
//// Envoie une requête SQL à un serveur MySQL , donc mysql_query (utilise la variable $sql qui demande l'insertion d'element dans une table
mysql_query ($sql);
$confirmation = '<p align="center"><span class="Titre_h2">L\'ajout du congrès à bien été pris en compte.<br />
<span class="Titre_h2">Il est désormé visible pour tous les utilisateurs.</span></span><br />
</p>';
}
}
/*****************************************************************/
// Envoie une requête SQL à un serveur MySQL , donc mysql_query (utilise la variable $sql qui demande l'insertion d'element dans une table
mysql_query ($insertion_dans_la_table) or die ("Exécution de la requêtes impossible.");
?>
et je voudrais mettre cette syntax qui me permettrais de changé le nom du fichier uploadé... (etant débutant peu êtres qu'il y a des erreurs...)
// TEST DE CHANGEMENT DE NOM DU FICHIER UPLOADER
//modification du nom, tout en minuscule "nom_du_congres_nom_du_fichier.pdf" :
$changement_nom_pdf1 = strtolower ($congres.'_'.$dest_fichier);
quand je test, j'insere la syntax ci-dessus juste après la partie de code suivante // formatage du nom du fichier / Sépare le nom du fichier et le nom du dossier
$dest_fichier = basename($_FILES['PDF']['name']);
mais bien evidement cela ne marche pas, car la variable $congres n'est pas encore définie (enfin, je pense ?), elle est definie plus bas dans le code....je suis entraint de me creusé la tete pour savoir ou dois-je placer cette syntax pour quelle puisse marché
j'ai fais un essaie en montant les déclarations de variable en haut de page, mais la je me retrouve avec des variable qui ne sont pas encore définie ??? (message erreur)
Comment puis-je faire ?