Vous êtes ici Codes PHP et MySQL > Fichiers-Répertoires > Class php pour uploader des fichiers

 

Class php pour uploader des fichiers

Cette class permet d'uploader un ou plusiers fichiers dans le repertoire
de votre choix.
La seule contrainte est que le nom du champ fichier doit etre :fichier[]
car ce nom est utilisé comme index dans la class pour parcourir la variable $_FILES.
 
evanxg852000
Site de l'auteur voir
[2] sources en PHP voir
Code vu 3837 fois
Enregistré le 12 Oct 2009
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Class php pour uploader des fichiers
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
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.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Class php pour uploader des fichiers                      */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts530-PHP.htm              */
/* Auteur         : evanxg852000                                              */
/* Date édition   : 12 Oct 2009                                               */
/* Website auteur : http://evansofts.com/homefr.php                           */
/*                                                                            */
/******************************************************************************/

//-Evance soumaoro(Evan-XG)-//
//-http://evansofts.com-//
//-classe d'upload de fichier-//
//Ceci est une version ameliorée d'un script déja existant//
/*=============================================IMPORTANT========================
======
Contraintes : ne pas changer  l'attribut name du(des) champ(s) fichier car cet
 dernier est utilise comme cle
  <input type="file" name="fichier[]" ></input>
*/

class Upload{
private $maxsize;
private $repertoire;    
//repertoire des fichiers a dowloder ou rep de destination de l'upload
private $type=array();  //type autorise par l'instance
private $files=array();
private $bilan=array(); 
//permet de dresser un bilandes fichier uploader permet de voire l'echeque de
// lupload plus en detail


function __tostring() 
    {
    return 
"Cette classe permet de définir et manipuler une upload ou download.<br/>";
    }

  function __construct($repertoire,$type) 
    {
         $this->repertoire=$repertoire ;
         $this->type=$type ;
         $this->Max_size();
    }

protected function Max_size() 
// cette fonction retoure la taille max autorise du fichier 
    {                       
//a uploader par le serveur defini dans php ini (default=2GO)
        $val trim(ini_get('post_max_size'));
        $last strtolower($val{strlen($val)-1});
            switch($last)
            {
                case 'g':
                        $val *= 1024;
                case 'm':
                        $val *= 1024;
                case 'k':
                        $val *= 1024;
            }
           $this->maxsize=$val ;
        return $this->maxsize;
    }
    
function Get_max_size() 
    {
        return $this->maxsize;
    }

function Get_bilan() 
    {
        return $this->bilan;
    }
    
function Upload($files)
    {
        if(!empty($files))
        {
            // Récupération normale des informations
            //comptage du nbre de fichier a transferer
            $nb_fichiers count($files['fichier']['tmp_name']);
            $raport=array();
            for($i 0$i<$nb_fichiers$i++)
            {
                if(is_uploaded_file($files['fichier']['tmp_name'][$i]))
                {
                    $name     $files['fichier']['name'][$i];
                    $tmp_name $files['fichier']['tmp_name'][$i];
                    $type_file $files['fichier']['type'][$i];
                    $error    $files['fichier']['error'][$i];
                    $clean_name strtolower(basename($name));
                    $clean_name preg_replace('/[^a-z0-9.-]/''-'$clean_name
);
                    if($files['fichier']['size'][$i]>=$this->maxsize)
                    {
                            $raport[$i]['size']=false;
                    }
                    //verifie si le type est autorise a etre uploader
                    $test_type=false;
                    for($j=0;$j<count($this->type);$j++)
                    {
                        
//debug mode: echo $type_file; permet de voire le type du fichier
                        //debug mode: echo substr($name,-3); 
                       if(($this->type[$j])==$type_file)
                       { 
                            $test_type=true;
                       }
                    }
                    if ($test_type==true)
                    {
                            //si le est autorise alors on le deplace
                            if(move_uploaded_file($tmp_name$this->repertoire.
$clean_name)) 
// Déplacement  du répertoire temporaire vers le rep de destination
                            {
                                
//debug mode: $test=true; //si l'un des fichier est transfere on considere comme
// succes car le filtre a rejeter les otre c qui est normal 
                            }    
                            else
                            {
                                $raport[$i]['move']=false;
                            }
                    }
                    else
                    {
                        $raport[$i]['type']=false;
                    }
                }
            }
            $this->bilan=$raport;
        }
        else
        {
            return false;
            exit;
        }
        //analyse du raport
        if(count($raport)==0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
}
/*========== Exemple d'utilisation===============
$list=array(0=>"image/gif",1=>"image/png",2=>"image/bmp",3=>"image/jpg",3=>"imag
e/jpeg"); liste des fichiers autorises
$d=new Upload('repertoire/',$list);
$test=$d->Upload($_FILES); //$_FILES est le tableau super global de fichier
 envoye par le formulaire depuis  
?>
*/



?>
################################################################################
########################################
    CONTENU DU FICHIER DE TEST a coller dans un autre fichier
################################################################################
####################################
<?php
include('Upload.class.php');
/*
Contraintes : ne pas changer le lattribut name du(des) champ(s) fichier car cet
 dernier est utilise comme cle
<input type="file" name="fichier[]" ></input>
*/
$list=array(0=>"image/gif",1=>"image/png",2=>"image/bmp",3=>"image/jpg",3=>
"image/jpeg");
$d=new Upload('upfiles/',$list);
$test=$d->Upload($_FILES);
?>
<html>
<body>
<?php 
 if($test==true){   echo "Trop Chouettos !" ;}else{   echo "Trop Merdos!" ;}  
?>
<form method="POST" action="<?php echo basename(__FILE__); ?>
" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $d->Get_max_size
(); ?>" />
    <label>Fichier joint : <input type="file" name="fichier[]"
 ></input></label><br />
    <label>Fichier joint : <input type="file" name="fichier[]" /></label><br />
    <label>Fichier joint : <input type="file" name="fichier[]" /></label><br
 /><br />
    <input type="submit" value="Envoyer" />
    <input type="reset" value="Rétablir" />
</form>
</body>
</html>
 

Fonctions du code

: Crée un tableau - (PHP 4, PHP 5)
: Lit la valeur d'une option de configuration - (PHP 4, PHP 5)
: - (PHP 4, PHP 5)
: Calcule la taille d'une chaîne - (PHP 4, PHP 5)
: Renvoie une chaîne en minuscules - (PHP 4, PHP 5)
: Détermine si une variable contient une valeur non nulle - (PHP 4, PHP 5)
: Compte le nombre d'éléments d'un tableau ou le nombre de propriétés...
: Indique si le fichier a été téléchargé par HTTP POST - (PHP 4 >= 4.0.3, PHP 5)
: Sépare le nom du fichier et le nom du dossier - (PHP 4, PHP 5)
: Rechercher et remplacer par expression rationnelle standard - (PHP 4, PHP 5)
: Déplace un fichier téléchargé - (PHP 4 >= 4.0.3, PHP 5)
: Affiche un message et termine le script courant - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Fichiers-Répertoires

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité