Bon voilà un code complet qui s'appuie sur
cette classe
A la fin du message du lien ci-dessus tu trouveras la classe qu'il te suffit copier dans un fichier que tu nommeras par exemple "class_upload.php".
On fait appel à ce fichier à la première ligne du code ci-dessous.
Ensuite il te suffit d'indiquer les dossiers autorisés dans $dossiers_autorise comme dans l'exemple du code ci-dessous en deuxième ligne.
Et normalement tu n'as rien à faire d'autre pour que le code soit fonctionnel et t'affiche ce que tu souhaite et renomme les fichiers si d'autres de même nom sont déjà existants sur le serveur.
<?php
//Si on travaille en utf-8
header('Content-type: text/html; charset=UTF-8');
require('class_upload.php');
//Liste de tes dossiers autorisés (sans caractères spéciaux ni accents, ni espaces)
$dossiers_autorise = array('film','photo','autre');
$dossier = $dossiers_autorise[0];
$erreur_dossier = null;
// Si le formulaire est envoyé on regarde si $_POST['categorie'] fait partie du tableau de dossiers autorisés
if(isset($_POST['form_envoi'],$_POST['categorie']))
{
if (in_array($_POST['categorie'],$dossiers_autorise))
$dossier = $_POST['categorie'];
else
$erreur_dossier = 'Vous devez choisir la catégorie';
}
if (empty($erreur_dossier))
{
//Utilisation de la classe de téléchargement (cf la doc pour plus de précisions)
$up = new Telechargement($dossier,'form_envoi','fich_upload','get_form');
//Extensions autorisées
$extensions = array("jpeg", "jpg");
$up->Set_Extensions_accepte ($extensions);
// Contrôle sur les images pour vérifier que les fichiers téléchargés sont bien des images
$up->Set_Controle_dimImg();
// Les fichiers seront renommés en cas de doublon avec une méthode incrémentale (pour changer la méthode d'incrémentation cf la doc).
$up->Set_Renomme_fichier('incr');
// Envoi des données et traitement de l'upload avec rechargement de la page pour éviter un multi upload en cas de rafraichissement de la page.
$up->Upload('reload');
// Récupération des messages d'information
$resultat = $up->Get_Tab_message();
// Récupération du tableau des résultats
$transfert = $up->Get_Tab_upload();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
</head>
<body>
<div>
<form enctype = "multipart/form-data" action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']).'?get_form=1'?>" method = "post">
<p>
Catégorie : <select name="categorie" >
<option value="">Choisissez...</option>
<?php foreach ($dossiers_autorise as $value) echo '<option value="'.$value.'">'.$value.'</option>';?>
</select>
<br /> <br />
<input name = "fich_upload[]" type = "file" size = "70" />
<input type = "submit" name = "form_envoi" value = "Envoyez" />
</p>
</form>
<div style="margin-top:20px;">
<?php if (!empty($resultat))
foreach ($resultat as $num)
{
foreach ($num as $value)
echo htmlspecialchars($value).'<br />';
}
if(isset($erreur_dossier)) echo $erreur_dossier;
?>
</div>
<div>
<?php //affichage du message
if (!empty ($transfert))
{
echo '<p>';
$result = $transfert['resultat'];
foreach ($result as $num => $rep)
{
foreach ($rep as $key => $value)
{
if(!empty($value['nom']))
{
$dim = explode('x',$value['dim']);
echo htmlspecialchars('code à insérer : <img src ="'.$key.'/'.$value['nom'].'" width="'.$dim[0].'" height="'.$dim[1].'" />') ;
}
}
}
echo '</p>';
}
?>
</div>
</div>
</body>
</html>
L'avantage d'utiliser cette classe est qu'elle possède une gestion complète des erreurs (fichiers trop gros, mauvaise extension des fichiers etc.)
Et puis par exemple au lieu de simplement télécharger les images tu pourrais très facilement les redimensionner si elle dépassent une taille maximale pour qu'elle restent compatibles avec l'affichage sur ton site.
Pour ce faire il suffirait de remplacer dans le code php ci-dessus la ligne
$up->Set_Controle_dimImg();
par
$up->Set_Redim ('800','600');
soit redimensionnement en max 800 de largeur et 600 de hauteur (bien entendu préserve les proportions)
Autre facilités, si tu veux permettre plusieurs upload simultanés il te suffit de mettre plusieurs fois la ligne
<input name = "fich_upload[]" type = "file" size = "70" />
sous celle déjà existante dans le code html ci-dessus
Et bien d'autre possibilités qui sont indiquées dans le mode d'emploi au début du message que je t'ai donné en lien.
Si tu veux en savoir plus sur le fonctionnement interne du code (entre autre la fonction de renommage) il y a
ce tuto
Tiens-nous au courant de ton avancement
