Accueil > > > UPLOADEUR DE FICHIERS MULTIPLES V1
UPLOADEUR DE FICHIERS MULTIPLES V1
Information sur la source
Description
UPLOADEUR DE FICHIERS MULTIPLES - choix des extensions dans un tableau - contrôle des erreurs - extensible, ajout de 'file' dans le formulaire par la variable $j - quelques contrôles de sécurité et nettoyage - adaptable à differents projets - creation auto du repertoire upload - ideal pour le téléchargement d'images vers une galerie
Source
- <?php
- $rep = 'upload';/* vous decider */
- if (@file_exists($rep)){
- }else{
- @mkdir($rep, 0705);
- }
-
- /*reglages persos*/
- $j=5; /*indiquer ici le nombre de input file, faut pas exagerer les copains ...*/
- $size_max=250000; /*taille maxi du fichier*/
- $extensions = array('.png', '.gif', '.jpg', '.jpeg'); /*ici des images*/
- /*attention repercuter la liste dans le controle mine plus bas*/
-
- if(isset($_FILES['ufile'])){
- $c=count($_FILES['ufile']);
- }else{
- $c=0;
- }
-
-
- if(isset($_GET['del']) && !empty($_GET['del'])){
-
- $file=(string)$_GET['del'];
-
- if (@file_exists($rep.'/'.$file)){
-
- @unlink($rep.'/'.$file);
- $file=NULL;
- unset($_GET);
-
- }else{
- }
-
- }else{
- }
-
-
- if(isset($_POST['Sub']) && $_SERVER['REQUEST_METHOD']==="POST" ){
-
- echo '<div align="center"><pre>';
-
-
- echo '<a href="'.$_SERVER['PHP_SELF'].'">RETOUR AU FORMULAIRE</a><br />';
-
-
- foreach($_FILES as $k => $v) {
-
- $ti = 0 ;
-
- while($ti<$j) {
-
- $erreur="";
-
- echo '<hr><font color="red"><h3>'.$ti.'</h3></font><br />';
-
- if(empty($v['name'][$ti])){
- $erreur .= ' VIDE <br />';
- }else{
-
- }
-
-
- if(strlen($v['name'][$ti]) > 64 ){
- $erreur .= ' Le nom est trop long <br />';
- }else{
- }
-
-
- /*nettoyage nom*/
-
-
- $v['name'][$ti] = strtr($v['name'][$ti],
- 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
- 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
-
- $v['name'][$ti]=strtolower($v['name'][$ti]); /* .JPG -> .jpg ...*/
-
-
- $v['name'][$ti] = preg_replace('/([^.a-z0-9]+)/i', '-', $v['name'][$ti]);
-
- /*CES LIGNES SI ON VEUT UN FICHIER UNIQUE A CHAQUE UPLOAD*/
- /*JOUR - MOIS - ANNEE - HEURE - MINUTE - id - NOM*/
-
- $dateur = date('m-d-Y-H-i-').uniqid(); /*cette ligne*/
- if(isset($dateur)){
- $v['name'][$ti] = $dateur.$v['name'][$ti];
- }else{
- }
- /*SINON DEVALIDER CES LIGNES*/
-
- /*fin nettoyage nom*/
-
-
- //echo 'name : '.$v['name'][$ti].'<br />';
- //echo 'type : '.$v['type'][$ti].'<br />';
- //echo 'tmp : '.$v['tmp_name'][$ti].'<br />';
- //echo 'error : '.$v['error'][$ti].'<br />';
- //echo 'size : '.$v['size'][$ti].'<br />';
-
-
-
- //On fait un tableau contenant les extensions autorisées.
- //Comme il s'agit d'un avatar pour l'exemple, on ne prend que des extensions d'images.
- //$extensions = array('.png', '.gif', '.jpg', '.jpeg'); /*ici des images*/
- // récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
- $extension = strrchr($v['name'][$ti], '.');
- //Ensuite on teste
- if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
- {
- $erreur .= ' Vous devez uploader un fichier de type gif, jpg, jpeg<br />';//exit;
- }
-
- /*et si il fake ou spoof*/
- $blacklist = array(".php", ".phtml", ".php3", ".php4",".exe",".bin",".zip",".js",".bat"); /*etc ...*/
- foreach ($blacklist as $item) {
- if(preg_match("/$item\$/i", $v['name'][$ti])) {
- $erreur .= " EXTENSION DE FICHIER INTERDITE <br />";
- //exit;
- }
- }
-
- /*verifier le type mine autant de if, else if que de type*/
- if($v['type'][$ti]==="image/pjpeg"){
- //ok
- }
-
- else if($v['type'][$ti]==="image/gif"){
- //ok
- }
-
- else{
- $erreur .= $v['name'][$ti].' Verifier le format<br />';
- $autorisation=false;
- }
-
- //Taille du fichier secu 2 par la function filesize
- $taille = filesize($v['tmp_name'][$ti]);
- if($taille>$size_max){
- $erreur .= $v['name'][$ti].' FICHIER VRAIMENT TROP GROS<br />';
- }else{
- }
-
- if($v['error'][$ti]===0){
- echo $v['name'][$ti].' uploadable <br />';
- }else{
- $erreur .= $v['name'][$ti].' Non uploadable<br />';
- $autorisation=false;
- //echo $erreur.'\n';
- }
-
- if($v['size'][$ti]>$size_max){
-
- $erreur .= $v['name'][$ti].' FICHIER TROP GROS<br />';
- $autorisation=false;
-
- } elseif($erreur===""){
-
-
- /*pas d erreur on traite*/
-
-
- $autorisation=true;
-
- /*upload*/
-
- $f=$v['tmp_name'][$ti];
- $path="upload/".$v['name'][$ti];
-
- if(isset($f) && !empty($f) && $autorisation==true){
-
- copy($f,$path);
-
- @unlink($f); /*on efface le tmp*/
-
- echo '<h3><font color="green">Copie reussie</h3></font>'.$v['name'][$ti].'<br />';
-
-
- if(file_exists($path)!=""){
-
- echo "<p>";
- echo "file name :".$v['name'][$ti]."<br/>";
- echo "file size :".$v['size'][$ti]."<br/>";
- echo "file type :".$v['type'][$ti]."<br/>";
- echo "<img src=\"".$path."\" width=\"150\" height=\"150\">";
- echo "</p>";
-
- }else{
- echo 'image1 ?<br />';
- }
-
- }else{
-
- $autorisation=false;
- $path="";
- $f="";
- }
-
- }else{
-
-
-
-
-
- }
-
- echo '<font color="red">'.$erreur.'</font>';
- /*image suivante*/
-
- $ti++;
- $autorisation=false; /*prochain $_FILES non autorisé*/
-
- }/*fin du while*/
-
-
-
- } /*fin du foreach*/
-
- echo '</pre></div>';
-
- exit;
-
- }else{
- $form = '<table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
- <tr>
- <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
- <td>
- <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFEEDD">
- <tr>
- <td><strong>Uploadeur Multiple</strong></td>
- </tr>
- ';
- $i=0;
- while($i<$j){
- $form .='<tr>';
- $form .= '<td>CHOISIR UN FICHIER '.($i+1).'
- <input name="ufile[]" type="file" id="ufile[]" size="50" /></td>
- </tr>';
- $i++;
- }
-
- $form .= '<td align="center"><input type="submit" name="Sub" value="Upload" /></td>
- </tr>
- </table>
- </td>
- </form>
- </tr>
- </table>';
- echo $form;
- }
-
-
-
- /*listage du repertoire */
-
- echo '<div align="center">';
-
- if ($handle = opendir($rep)) {
- while (false !== ($file = readdir($handle))) {
- if ($file != "." && $file != "..") {
-
- //$extensions = array('.png', '.gif', '.jpg', '.jpeg'); /*ici des images*/
- // récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
- $extension = strrchr($file, '.');
- //Ensuite on teste
- if(in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
- {
-
- echo $file.' : <a href="?del='.$file.'">Effacer</a> <a href="'.$rep.'/'.$file.'">Voir</a><br />';
-
-
- }else{
-
- /* les fichiers interdits */
-
- }
-
- }
- }
- closedir($handle);
- }
-
- echo '</div>';
- ?>
<?php
$rep = 'upload';/* vous decider */
if (@file_exists($rep)){
}else{
@mkdir($rep, 0705);
}
/*reglages persos*/
$j=5; /*indiquer ici le nombre de input file, faut pas exagerer les copains ...*/
$size_max=250000; /*taille maxi du fichier*/
$extensions = array('.png', '.gif', '.jpg', '.jpeg'); /*ici des images*/
/*attention repercuter la liste dans le controle mine plus bas*/
if(isset($_FILES['ufile'])){
$c=count($_FILES['ufile']);
}else{
$c=0;
}
if(isset($_GET['del']) && !empty($_GET['del'])){
$file=(string)$_GET['del'];
if (@file_exists($rep.'/'.$file)){
@unlink($rep.'/'.$file);
$file=NULL;
unset($_GET);
}else{
}
}else{
}
if(isset($_POST['Sub']) && $_SERVER['REQUEST_METHOD']==="POST" ){
echo '<div align="center"><pre>';
echo '<a href="'.$_SERVER['PHP_SELF'].'">RETOUR AU FORMULAIRE</a><br />';
foreach($_FILES as $k => $v) {
$ti = 0 ;
while($ti<$j) {
$erreur="";
echo '<hr><font color="red"><h3>'.$ti.'</h3></font><br />';
if(empty($v['name'][$ti])){
$erreur .= ' VIDE <br />';
}else{
}
if(strlen($v['name'][$ti]) > 64 ){
$erreur .= ' Le nom est trop long <br />';
}else{
}
/*nettoyage nom*/
$v['name'][$ti] = strtr($v['name'][$ti],
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$v['name'][$ti]=strtolower($v['name'][$ti]); /* .JPG -> .jpg ...*/
$v['name'][$ti] = preg_replace('/([^.a-z0-9]+)/i', '-', $v['name'][$ti]);
/*CES LIGNES SI ON VEUT UN FICHIER UNIQUE A CHAQUE UPLOAD*/
/*JOUR - MOIS - ANNEE - HEURE - MINUTE - id - NOM*/
$dateur = date('m-d-Y-H-i-').uniqid(); /*cette ligne*/
if(isset($dateur)){
$v['name'][$ti] = $dateur.$v['name'][$ti];
}else{
}
/*SINON DEVALIDER CES LIGNES*/
/*fin nettoyage nom*/
//echo 'name : '.$v['name'][$ti].'<br />';
//echo 'type : '.$v['type'][$ti].'<br />';
//echo 'tmp : '.$v['tmp_name'][$ti].'<br />';
//echo 'error : '.$v['error'][$ti].'<br />';
//echo 'size : '.$v['size'][$ti].'<br />';
//On fait un tableau contenant les extensions autorisées.
//Comme il s'agit d'un avatar pour l'exemple, on ne prend que des extensions d'images.
//$extensions = array('.png', '.gif', '.jpg', '.jpeg'); /*ici des images*/
// récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
$extension = strrchr($v['name'][$ti], '.');
//Ensuite on teste
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur .= ' Vous devez uploader un fichier de type gif, jpg, jpeg<br />';//exit;
}
/*et si il fake ou spoof*/
$blacklist = array(".php", ".phtml", ".php3", ".php4",".exe",".bin",".zip",".js",".bat"); /*etc ...*/
foreach ($blacklist as $item) {
if(preg_match("/$item\$/i", $v['name'][$ti])) {
$erreur .= " EXTENSION DE FICHIER INTERDITE <br />";
//exit;
}
}
/*verifier le type mine autant de if, else if que de type*/
if($v['type'][$ti]==="image/pjpeg"){
//ok
}
else if($v['type'][$ti]==="image/gif"){
//ok
}
else{
$erreur .= $v['name'][$ti].' Verifier le format<br />';
$autorisation=false;
}
//Taille du fichier secu 2 par la function filesize
$taille = filesize($v['tmp_name'][$ti]);
if($taille>$size_max){
$erreur .= $v['name'][$ti].' FICHIER VRAIMENT TROP GROS<br />';
}else{
}
if($v['error'][$ti]===0){
echo $v['name'][$ti].' uploadable <br />';
}else{
$erreur .= $v['name'][$ti].' Non uploadable<br />';
$autorisation=false;
//echo $erreur.'\n';
}
if($v['size'][$ti]>$size_max){
$erreur .= $v['name'][$ti].' FICHIER TROP GROS<br />';
$autorisation=false;
} elseif($erreur===""){
/*pas d erreur on traite*/
$autorisation=true;
/*upload*/
$f=$v['tmp_name'][$ti];
$path="upload/".$v['name'][$ti];
if(isset($f) && !empty($f) && $autorisation==true){
copy($f,$path);
@unlink($f); /*on efface le tmp*/
echo '<h3><font color="green">Copie reussie</h3></font>'.$v['name'][$ti].'<br />';
if(file_exists($path)!=""){
echo "<p>";
echo "file name :".$v['name'][$ti]."<br/>";
echo "file size :".$v['size'][$ti]."<br/>";
echo "file type :".$v['type'][$ti]."<br/>";
echo "<img src=\"".$path."\" width=\"150\" height=\"150\">";
echo "</p>";
}else{
echo 'image1 ?<br />';
}
}else{
$autorisation=false;
$path="";
$f="";
}
}else{
}
echo '<font color="red">'.$erreur.'</font>';
/*image suivante*/
$ti++;
$autorisation=false; /*prochain $_FILES non autorisé*/
}/*fin du while*/
} /*fin du foreach*/
echo '</pre></div>';
exit;
}else{
$form = '<table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFEEDD">
<tr>
<td><strong>Uploadeur Multiple</strong></td>
</tr>
';
$i=0;
while($i<$j){
$form .='<tr>';
$form .= '<td>CHOISIR UN FICHIER '.($i+1).'
<input name="ufile[]" type="file" id="ufile[]" size="50" /></td>
</tr>';
$i++;
}
$form .= '<td align="center"><input type="submit" name="Sub" value="Upload" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>';
echo $form;
}
/*listage du repertoire */
echo '<div align="center">';
if ($handle = opendir($rep)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
//$extensions = array('.png', '.gif', '.jpg', '.jpeg'); /*ici des images*/
// récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
$extension = strrchr($file, '.');
//Ensuite on teste
if(in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
echo $file.' : <a href="?del='.$file.'">Effacer</a> <a href="'.$rep.'/'.$file.'">Voir</a><br />';
}else{
/* les fichiers interdits */
}
}
}
closedir($handle);
}
echo '</div>';
?>
Conclusion
- bricoler en une aprés-midi - j'aimerai partager des idées de sécurisation - si on ajoute un systeme d'identification simple on a un petit gestionnaire - on pourra facilement interfacer sur mysql si on ajoute des champs au formulaire ...
Historique
- 20 mars 2011 20:42:59 :
- ajout de la possibilité de supprimer
listage suivant le tableau des extensions
un lien retour au formulaire
- 20 mars 2011 20:53:41 :
- - ajout du lien voir fichier
- 20 mars 2011 20:56:51 :
- - ajout du zip
Sources de la même categorie
VALIDATEUR DE FORMULAIREVALIDATEUR DE FORMULAIREJ'ai codé cet ensemble de classes pour accélérer la création de formulaire sans l'alourdir avec une classe la plus simple possible d'utilisation.
J'a...
par Reldan
SUIVI SERVICE CLIENT PHPSUIVI SERVICE CLIENT PHP Bonjour. Voici mon premier dev en PHP.
Il reste encore beaucoup de travail a faire, afin de le finir, en y incluant par exemple tout e la partie bas...
par hige52
POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COMPOO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM Il y a de nombreuses sources sur les formulaire de newsetter, je propose en plus la vidéo pour l'explication de la source, merci.
Voici le tutorial...
par mtrix000
SELECTEUR DE NOTESELECTEUR DE NOTEUne classe Php et le plugin jQuery correspondant pour un sélecteur de note simplissime d'utilisation.
Rien de bien novateur mais je n'ai pas trouvé d...
par Reldan
ESPACE MEMBRE , AVEC CASE OPTIONNEL , SANS MYSQLESPACE MEMBRE , AVEC CASE OPTIONNEL , SANS MYSQLvoici un espace membre qu'on peut qualifier de très simple, il n'utilise pas de bdd, ni mysql il est plus fait pour de petits sites, il n'y a rien d'a...
par sartoz
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
upload dans table [ par eax ]
salut!je voudrais savoir s'il est possible d'uploader un fichier (une image par exemple) et le stocker dans un champ d'une base de données mysqlje vou
Upload d'Image et resize de cette image [ par 4feeling ]
je cherche un petit bout de script qui permettrai d'uploader une image jpeg et l'enregistrer dans une taille précise. Par exemple on uploade, et on en
Upload image et limitation taille [ par millo ]
Je suis entrain de dévellopé un script ou je propose l'upload de photo mais pour des raisons évidentes je souhaite limiter l'espace disque réservé pou
Probleme code de securité [ par zzzzzz ]
Voila je suis debutant en php et j'ai inclue un fichier code.php avec comme contenu: header("Content-type: image/jpeg"); $nbr = rand(10000,100000);
upload d'images [ par G_ki_aime_pas_le_php ]
Salut à tous!G un petit problème j'essaie d'uploader un fichier et ça fonctionne pas.G TOUT essayé j'en ai marre!Est ce que quelqu'un aurait la soluti
upload d'image [ par guikiki ]
Bonjour à tous!!!voilà..encore un problème que je n'ai toujours pas réussit à résoudre et ce n'est pas faute d'essayer!!voilà, j'ai fait une page en i
afficher les image d'un repertoir et un sous repertoir + upload [ par angelx ]
bonjour je voudrais afficher les image d'un reperoire et SOUS Repertoire + faire un uploade sans donner le chemin de l'image en utilisant les image ge
Prob Upload d'image... [ par zzzzzz ]
yepj'ai un formulaire qui envoie une image cela marche parfaitement. Mais dans la partie vérification (les conditions marchent parfaitement) l'image n
upload +insert bdd :( [ par ksinteractive ]
bonjour et merci d'avance :)jai fais une petite admin avec insertion d'une fiche avec le nom du modele et un champ upload pour uploader une image qui
Upload image .. j'ai cherché mais je ne comprends pas .. :S [ par Hash2o ]
Voila, je suis a la recherche d'une solution pour uploader une image sur un serv. J'ai essayé la plus part des solutions proposer sur le site mais je
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|