<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$taille_max = $_POST['taille_max'];
$dest_dossier = './';
// utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
// vérifications
if($_FILES["photo"]["type"] != "image/jpeg" && $_FILES["photo"]["type"] != "image/png" && $_FILES["photo"]["type"] != "image/gif")
{
$erreur = "Veuillez sélectionner un fichier de type png, gif ou jpg !";
}
elseif( file_exists($_FILES['photo']['tmp_name']) and $_FILES['photo']['size'] > $taille_max)
{
$erreur = "Votre fichier doit faire moins de ". $taille_max / 1024 ."Ko !";
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// 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
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier))
{
$message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n";
}
else
{
$erreur = "Une erreur s'est produite, le téléchargement s'est interrompu.";
}
}
}
?>
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur))
{
echo "<p>". $erreur ."</p>\n";
}
elseif(isset($message))
{
echo($message);
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" pour l'envoi de fichiers -->
<form method="POST" action="<?php echo($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko (500 x 1024) -->
<input type="hidden" name="MAX_FILE_SIZE" value="512000" />
<!--
On ajoute un champ de taille maxi pour le traitement coté
serveur d'une taille égale ou légèrement inférieure au champ précédent
-->
<input type="hidden" name="taille_max" value="512000" />
<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>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>
</body>
</html>
Il te reste à ajuster les paramètres de taille de fichier et le répertoire de destination.<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$taille_max = $_POST['taille_max'];
$dest_dossier = 'photos/';
// utilisez également des slashes sous windows : $dest_dossier = 'photos/';
// vérifications
if($_FILES["photo"]["type"] != "image/jpeg" && $_FILES["photo"]["type"] != "image/png" && $_FILES["photo"]["type"] != "image/gif")
{
$erreur = "Veuillez sélectionner un fichier de type png, gif ou jpg !";
}
elseif( file_exists($_FILES['photo']['tmp_name']) and $_FILES['photo']['size'] > $taille_max)
{
$erreur = "Votre fichier doit faire moins de ". $taille_max / 1024 ."Ko !";
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// 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
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier))
{
$message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n";
}
else
{
$erreur = "Une erreur s'est produite, le téléchargement s'est interrompu.";
}
}
}
?>
Maintenant même les "petites" images ne marchent pas <?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = $_POST['taille_max'];
$dest_dossier = 'photos/';
// 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['photo']['tmp_name']) && $_FILES['photo']['size'] > $taille_max)
{
$erreur = "Votre fichier doit faire moins de ". $taille_max / 1024 ." Ko !";
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// 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
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier))
{
echo("<p>Le fichier a été correctement chargé dans son répertoire.</p>\n");
}
else
{
echo("<p>Une erreur s'est produite : Le fichier n'a pas été correctement chargé.</p>\n");
}
}
}
?>
quand je mets dans le formulaire action=upload.php ca marche pas, en revanche sur upload2.php la ca marche, mais ça marche juste pour les toutes petites images, j'ai essayé avec une de 256Ko et ça ne marche plus . Ca ouvre upload2.php sans le message de confirmation et ça marque "terminé" en bas ... Bizare <?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$taille_max = $_POST['taille_max'];
$dest_dossier = 'photos/';
// utilisez également des slashes sous windows : $dest_dossier = 'photos/';
// vérifications
if($_FILES["photo"]["type"] != "image/jpeg" && $_FILES["photo"]["type"] != "image/png" && $_FILES["photo"]["type"] != "image/gif")
{
$erreur = "Veuillez sélectionner un fichier de type png, gif ou jpg !";
}
elseif( file_exists($_FILES['photo']['tmp_name']) and $_FILES['photo']['size'] > $taille_max)
{
$erreur = "Votre fichier doit faire moins de ". $taille_max / 1024 ."Ko !";
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// 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
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier))
{
$message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n";
}
else
{
$erreur = "Une erreur s'est produite, le téléchargement s'est interrompu.";
}
}
}
?>
Ca a marcher avec 256Ko mais il n'y a plus le message de confirmation Tu ne remplace pas, tu rajoutes., regarde le script que j'ai mis plus haut, ça devrait être très évident, enfin il me semble, j'écris pas en chinois...donc je remplace $erreur par $message![]()
<?php
if(isset($erreur))
{
echo "<p>". $erreur ."</p>\n";
}
elseif(isset($message))
{
echo($message);
}
?>
Par contre j'ai pas encore compris où il faut le mettre dans la page <?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$taille_max = $_POST['taille_max'];
$dest_dossier = 'photos/';
// utilisez également des slashes sous windows : $dest_dossier = 'photos/';
// vérifications
if($_FILES["photo"]["type"] != "image/jpeg" && $_FILES["photo"]["type"] != "image/png" && $_FILES["photo"]["type"] != "image/gif")
{
$erreur = "Veuillez sélectionner un fichier de type png, gif ou jpg !";
}
elseif( file_exists($_FILES['photo']['tmp_name']) and $_FILES['photo']['size'] > $taille_max)
{
$erreur = "Votre fichier doit faire moins de ". $taille_max / 1024 ."Ko !";
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// 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
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier))
if(isset($erreur))
{
echo "<p>". $erreur ."</p>\n";
}
elseif(isset($message))
{
echo($message);
}
{
$message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n";
}
else
{
$erreur = "Une erreur s'est produite, le téléchargement s'est interrompu.";
}
}
}
?>
je me suis trompé ?Code : Tout sélectionner
{
$message = "<p>Le fichier ". $_FILES['photo']['name'] ." a été correctement téléchargé vers ". $dest_dossier . $dest_fichier .".</p>\n";
}