par
capou » 02 juin 2005, 15:06
Moi j'ai juste un pb avec la taille de la photo.
Si je mets par exemple 100000 en taille_max, mon code ne me sort pas le msg d'erreur "Votre fichier doit faire moins de 100Ko". Il réagit comme si la photo avait bien été uploadé.
Mais elle n'est quand meme pas dans mon répertoire.
Je vous donne mon code au cas ou:
<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
// 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 !';
}
if( filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 100Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
$dest_dossier = ".foto/".$dest_fichier;
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier, '¿¡¬?ƒ?«»… ÀÃÕŒœ“”‘’÷Ÿ/€‹›‡·‚„‰ÂÁËÈÍÎÏÌÓÔ?ÚÛÙ?ˆ<breve>??¸´´<caron>', '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['photo']['tmp_name'], $dest_dossier);
}
}
?>
Code : Tout sélectionner
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
<form method="POST" action="30.php" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers ‡ 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="photo">Photo :</label><input type="file" name="photo" /></p>
<p><label for="photo_2"></label><!-- bouton d'envoi --> </p>
<p>
<input type="submit" name="envoi" value="Envoyer les fichiers" />
</p>
</fieldset>
</form>
</body>
</html>
Moi j'ai juste un pb avec la taille de la photo.
Si je mets par exemple 100000 en taille_max, mon code ne me sort pas le msg d'erreur "Votre fichier doit faire moins de 100Ko". Il réagit comme si la photo avait bien été uploadé.
Mais elle n'est quand meme pas dans mon répertoire.
Je vous donne mon code au cas ou:
[php]<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
// 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 !';
}
if( filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 100Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
$dest_dossier = ".foto/".$dest_fichier;
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier, '¿¡¬?ƒ?«»… ÀÃÕŒœ“”‘’÷Ÿ/€‹›‡·‚„‰ÂÁËÈÍÎÏÌÓÔ?ÚÛÙ?ˆ<breve>??¸´´<caron>', '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['photo']['tmp_name'], $dest_dossier);
}
}
?>[/php]
[code]
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
<form method="POST" action="30.php" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers ‡ 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="photo">Photo :</label><input type="file" name="photo" /></p>
<p><label for="photo_2"></label><!-- bouton d'envoi --> </p>
<p>
<input type="submit" name="envoi" value="Envoyer les fichiers" />
</p>
</fieldset>
</form>
</body>
</html>[/code]