Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: chelmi81 le le 13-12-2010 a 16:00:10

Titre: [Résolu]Envoi + nom de fichier en php
Posté par: chelmi81 le le 13-12-2010 a 16:00:10

Bonjour,

je souhaite "uploader" un fichier et surtout pouvoir le renommer. Je souhaite qu'il prenne le nom de la personne (via un input) à qui appartient le fichier en question.

Je suis en plein apprentissage du code PHP et après de multiples recherches, j'ai bien compris comment faire pour traiter l'envoi mais j'ai toujours des difficultés à renommer le fichier sans créer une autre erreur.

Le dernier code que j'ai modifié me permet bien de renommer le fichier mais le problème c'est qu'il me fait disparaitre mon extension. Je retrouve donc un fichier qui a bien de la personne mais qui est d'un format inconnu.

Je vous remercie par avance pour toutes vos réponses.

Code HTML.

<html> <body>

<form method="POST" action="30.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />

<p><label for="nom">Nom :</label><input type="text" name="nom" /></p>
<p><label for="photo">Fichier :</label><input type="file" name="fichier" /></p>

<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>

</form>
</body></html





Traitement PHP

<?php

if(isset($_FILES['fichier']))
{
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 1000000;
$dest_dossier = 'fichiers/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['fichier']['tmp_name'])
and filesize($_FILES['fichier']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}

if(!isset($erreur))
{
$dest_fichier = basename($_FILES['fichier']['name']);
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

$dest_fichier = $_POST ['nom'];

move_uploaded_file($_FILES['fichier']['tmp_name'], $dest_dossier . $dest_fichier);
}
}

?>

Titre: Re:envoi + nom de fichier en php
Posté par: chelmi81 le le 13-12-2010 a 17:12:48

Je suis désolé mais il y a eu une erreur dans mon code et je n'ai pas pu modifier directement mon post...

if( !in_array( substr(strrchr($_FILES['fichier']['name'], '.'), 1), $extensions_ok ) )

à la place de

if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )

Titre: Re:RESOLU envoi + nom de fichier en php
Posté par: chelmi81 le le 13-12-2010 a 19:12:06

J'ai collé une variable extension derrière le nom après l'avoir récupérée.

move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier .$extension);


Merci quand même


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.