1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353
| <?php
require('Classe_Upload.php');
/*EXEMPLE
Paramétrage en fonction des deux formulaires de téléchargement intégrés dans le code source.
Pour un fonctionnement sans modification des paramètres, suppose les répertoires PHOTO, PHOTO_GF, PHOTO_PF et PDF situés à la racine du site.*/
// FORMULAIRE 1
// Téléchargement de photos avec contrôle anti-écrasement d'un fichier déjà existant, et contrôle des images
// Déclaration de la classe avec envoi des paramètres
$form_1 = new Telechargement ('PHOTO','formulaire_1','photo','get_formulaire_1');
// Contrôle simple (anti écrasement) de l'existence d'un fichier de nom identique dans le répertoire de destination
$form_1->Set_Controle_fichier ();
// Contrôle que le fichier est effectivement une image de type gif, jpg, jpeg ou png et retourne ses dimensions dans le tableau des résultats
$form_1->Set_Controle_dimImg ();
//Téléchargement sans traitement php supplémentaire -> on spécifie un rechargement de la page suite au téléchargement en indiquant un argument non nul ex 'reload' dans la fonction d'Upload.
$form_1->Upload('reload');
// Enregistrement des messages de contrôle (si besoin)
$messages_form1 = $form_1->Get_Tab_message ();
// Enregistrement du tableau des résultats (si besoin)
$tranfert_form1 = $form_1->Get_Tab_upload ();
// FORMULAIRE 2
// Téléchargements de fichiers de nature différentes (photos et pdf) dans des répertoires différents avec si besoin renommage des fichiers, puis redimentionnement des images et traitement php.
$form2_photo = new Telechargement('PHOTO','formulaire_2','photo','get_formulaire_2');
// Tableau des extensions autorisées (en minuscules). Dans cet exemple, seules les extensions "jpg" et "jpeg" sont autorisées
$tab_extensions_autorisees = array('jpg','jpeg');
// Envoi du tableau des extensions autorisées
$form2_photo->Set_Extensions_accepte($tab_extensions_autorisees);
// Images originales téléchargées dans le répertoire "PHOTO" + mêmes images redimensionnées en max 950 x 800 téléchargées dans le répertoire "PHOTO_GF" + mêmes images redimensionnées en max 200 x 200 téléchargées dans le répertoire "PHOTO_PF"
$form2_photo->Set_Redim ('950','800','PHOTO_GF');
$form2_photo->Set_Redim ('200','200','PHOTO_PF');
// Contrôle de l'existence d'un fichier de nom identique dans le répertoire de destination et si oui renommage du fichier téléchargé avec un suffixe aléatoire unique.
$form2_photo->Set_Renomme_fichier ();
// Téléchargement sans reload de la page
$form2_photo->Upload ();
// Dans le même formulaire un fichier pdf à télécharger dans le répertoire "PDF"
$form2_pdf = new Telechargement('PDF','formulaire_2','pdf','get_formulaire_2');
// Tableau des extensions autorisées (en minuscules). Dans cet exemple, seules les extensions "pdf" sont autorisées
$extensions_pdf = array('pdf');
// Envoi du tableau des extensions autorisées
$form2_pdf->Set_Extensions_accepte ($extensions_pdf);
// Contrôle de l'existence d'un fichier de nom identique dans le répertoire de destination et si oui renommage du fichier téléchargé avec un suffixe incrémentiel
$form2_pdf->Set_Renomme_fichier ('incr');
// Téléchargement sans reload de la page
$form2_pdf->Upload ();
// Le reload de la page sera effectué à la fin du traitement php en utilisant la fonction "Get_Reload_page()"
if (isset($_POST['formulaire_2']))
{
//Récupération des résultats
//$transfert_form2_photo = $form2_photo->Get_Tab_upload ();
//$transfert_form2_pdf = $form2_pdf->Get_Tab_upload ();
// Voir la structure du tableau de résultat, et un exemple de récupération en fin de script
//enregistrement des données en bdd etc.
// Rechargement de la page pour éviter un multiple post en cas de rafraichissement de la page par le visiteur
$form2_photo->Get_Reload_page();
}
// A noter que l'appel à la fonction Get_Tab_message() doit se faire APRES la condition "if (isset($_POST..."
$messages_form2_pdf = $form2_pdf->Get_Tab_message ();
$messages_form2_photo = $form2_photo->Get_Tab_message ();
// Les deux lignes ci-dessous doivent logiquement se trouver à l'intérieur la condition "if (isset($_POST...)" pour servir par exemple à alimenter une bdd. Elles sont ici uniquement pour démonstration et afficher la structure du taleau de résultat en bas de page.
$transfert_form2_photo = $form2_photo->Get_Tab_upload ();
$transfert_form2_pdf = $form2_pdf->Get_Tab_upload ();
// Vous pouvez éventuellement mettre la déclaration de la classe (et l'appel de ses fonctions) à l'intérieur de la condition "if (isset($_POST...)", cependant vous devrez alors enregistrer le tableau des messages dans une variable de session pour pouvoir y accéder après le reload de la page, et d'autre part le message indiquant un dépassement du $_POST maximum total autorisé par le serveur ne sera plus fonctionnel.
/* Debug
- Si aucun message ne s'affiche après l'envoi d'un fichier, un ou plusieurs paramètres passés dans la déclaration de la classe sont erronés ou les variables de session ne fonctionnent pas sur votre serveur.
- Si le message "Le total maximum du post autorisé par le serveur est dépassé" s'affiche même pour un fichier de petite taille, le nom de l'input d'identification du formulaire passé en deuxième paramètre lors de l'initialisation de la classe est erroné.
*/
?>
<!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 titre</title>
<script type="text/javascript">
<!--
function Verif_attente(id_attente)
{
var id_attente = document.getElementById(id_attente);
if (typeof id_attente != 'undefined')
{
// Nettoyage de l'élément cible
var nb_noeuds = id_attente.childNodes.length;
for (var i = 0; i < nb_noeuds; i++)
{
id_attente.removeChild(id_attente.firstChild);
}
id_attente.style.fontWeight="bold";
id_attente.style.fontSize="1.5em";
var texte = 'Patientez...';
// Création du noeud texte
var noeud_texte = document.createTextNode(texte);
// Insertion du noeud texte
id_attente.appendChild(noeud_texte);
}
}
-->
</script>
<style type="text/css">
body {
font-family: Arial, Helvetica, sans-serif;
font-size:12px;
}
p, input, form {
margin:0;
padding:0;
}
</style>
</head>
<body>
<div style="width:650px;margin:auto;margin-top:50px;">
<p>Fichiers photos (png, jpg, jpeg, gif)</p>
<form enctype = "multipart/form-data" action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']).'?get_formulaire_1=1'?>" method = "post" onsubmit = "Verif_attente('message_tele')" id = "formulaire_1">
<p>
<!-- input d'identification du formulaire qui doit être passé en paramètre dans l'initialisation de la classe-->
<input type = "hidden" name = "formulaire_1" value = "1" />
<!-- Par défaut MAX_FILE_SIZE = Return_Octets(ini_get('upload_max_filesize') donc ne sert à rien en l'état. Pour limiter l'upload à une taille inférieure vous pouvez rentrez une valeur suivie de son unité, exemple $form_1->Return_Octets('500K') pour 500 kilos octets, $form_1->Return_Octets('1M') pour 1 méga octets etc. La fonction "Return_Octets" est employée pour la conversion en octets car le champ MAX_FILE_SIZE demande une valeur en octets. -->
<input type = "hidden" name = "MAX_FILE_SIZE" value = "<?php echo isset($form_1)? $form_1->Return_Octets(ini_get('upload_max_filesize')) : ''?>" />
<input name = "photo[]" type = "file" size = "70" /><br />
<input name = "photo[]" type = "file" size = "70" />
<input name = "photo[]" type = "file" size = "70" />
<input type = "submit" value = "Envoyez" style = "margin-left:5px" />
</p>
</form>
<p>
<br />Taille maximum de fichier autorisée par le serveur = <?php echo ini_get('upload_max_filesize').'o'?>. Total maximum pour l'ensemble <?php echo ini_get('post_max_size').'o'?>.
</p>
<div id = "message_tele" style="margin-top:20px;">
<?php if (!empty($messages_form1))
foreach ($messages_form1 as $num)
{
foreach ($num as $value)
echo htmlspecialchars($value).'<br />';
}
?>
</div>
</div>
<div style="width:650px;margin:auto;margin-top:80px;">
<form enctype = "multipart/form-data" action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']).'?get_formulaire_2=1'?>" method = "post" onsubmit = "Verif_attente('message_tele2')" id = "formulaire_2">
<p>
<!-- input d'identification du formulaire qui doit être passé en paramètre dans l'initialisation de la classe-->
<input type = "hidden" name = "formulaire_2" value = "1" />
<!-- Par défaut MAX_FILE_SIZE = Return_Octets(ini_get('upload_max_filesize') donc ne sert à rien en l'état. Pour limiter l'upload à une taille inférieure vous pouvez rentrez une valeur suivie de son unité, exemple $form2_pdf->Return_Octets('500K') pour 500 kilos octets, $form2_pdf->Return_Octets('1M') pour 1 méga octets etc. La fonction "Return_Octets" est employée pour la conversion en octets car le champ MAX_FILE_SIZE demande une valeur en octets. -->
<input type = "hidden" name = "MAX_FILE_SIZE" value = "<?php echo isset($form2_pdf) ? $form2_pdf->Return_Octets(ini_get('upload_max_filesize')) : '' ?>" />
<label for="login">Login</label><br />
<input type = "text" id = "login" name = "login" size = "70" /><br />
<span>Fichiers photos (png, jpg, jpeg, gif)</span><br />
<input name = "photo[]" type = "file" size = "70" /><br />
<input name = "photo[]" type = "file" size = "70" /><br />
<label for="pdf">Fichier pdf (pdf)</label><br />
<input id = "pdf" name = "pdf" type = "file" size = "70" />
<input type = "submit" value = "Envoyez" style = "margin-left:5px" />
</p>
</form>
<p>
<br />Taille maximum de fichier autorisée par le serveur = <?php echo ini_get('upload_max_filesize').'o'?>. Total maximum pour l'ensemble <?php echo ini_get('post_max_size').'o'?>.
</p>
<div id = "message_tele2" style="margin-top:20px;">
<?php
if (!empty($messages_form2_photo))
{
echo '<p>';
foreach ($messages_form2_photo as $num)
{
foreach ($num as $value)
echo htmlspecialchars($value).'<br />';
}
echo '</p>';
}
if (!empty($messages_form2_pdf))
{
echo '<p>';
foreach ($messages_form2_pdf as $num)
{
foreach ($num as $value)
echo htmlspecialchars($value).'<br />';
}
echo '</p>';
}
?>
</div>
</div>
<div style="margin-top:100px" >
<p>
<?php
// Lecture du tableau des résultats (se trouve ici uniquement pour la démonstration et visualiser la structue des tableaux de résultat)
if (!empty ($tranfert_form1))
{
$identifant = $tranfert_form1['identifiant'];
$champ = $tranfert_form1['champ'];
$resultat = $tranfert_form1['resultat'];//tableau à trois dimensions
echo $identifant.' :<br /><br />';
foreach ($resultat as $num => $rep)
{
foreach ($rep as $key => $value)
{
if(!empty($value['nom']))
echo 'champ '.$champ.' n° '.$num.' = '.$value['nom'].' '. $value['dim'].', téléchargé dans "'.$key.'"<br />';
}
}
} ?>
<br />
</p>
</div>
<div style="margin-top:100px">
<p>
<?php
// Lecture du tableau des résultats (se trouve ici uniquement pour la démonstration et visualiser la structue des tableaux de résultat)
if (!empty ($transfert_form2_photo))
{
$identifant = $transfert_form2_photo['identifiant'];
$champ = $transfert_form2_photo['champ'];
$resultat = $transfert_form2_photo['resultat'];//tableau à trois dimensions
echo $identifant.' :<br /><br />';
foreach ($resultat as $num => $rep)
{
foreach ($rep as $key => $value)
{
if(!empty($value['nom']))
echo 'champ '.$champ.' n° '.$num.' = '.$value['nom'].' '. $value['dim'].', téléchargé dans "'.$key.'"<br />';
}
}
} ?>
<br />
</p>
<p>
<?php
// Lecture du tableau des résultats (se trouve ici uniquement pour la démonstration et visualiser la structue des tableaux de résultat)
if (!empty ($transfert_form2_pdf))
{
$identifant = $transfert_form2_pdf['identifiant'];
$champ = $transfert_form2_pdf['champ'];
$resultat = $transfert_form2_pdf['resultat'];//tableau à trois dimensions
foreach ($resultat as $num => $rep)
{
foreach ($rep as $key => $value)
{
if(!empty($value['nom']))
echo 'champ '.$champ.' n° '.$num.' = '.$value['nom'].' '. $value['dim'].', téléchargé dans "'.$key.'"<br />';
}
}
} ?>
</p>
</div>
</body>
</html> |
Partager