13Fermer15
SpipuLe 11/02/2008 à 20:37
dans un premier temps, regarde l'intégralité du tableau $_FILE (fait un print_r ou un var_dump) et regarde ce qu'indiquent les champs d'erreur pour chaque fichier.
ensuite, si pas d'erreur, vérifie si les fichiers temporaires existent (avec is_file) et récupère leurs propriétés et autres.
ript créé par Laurent MINGUET (c)2007</h5>      </body> </html>voici un petit script que j'utilise pour uploader des fichiers : <?php if (!defined('APPLI_PATH')) {      function transformPath($path)      {           $path = str_replace('\', '/', $path).'/';           $path = str_replace('//', '/', $path);           return $path;      }      $path = transformPath(dirname(__FILE__));      define('APPLI_PATH', $path);      $root = transformPath($_SERVER['DOCUMENT_ROOT']);      $host = $_SERVER['HTTP_HOST'];      $root = preg_replace('|^/data|isU', '', $root);      $path = 'http://'.$host.'/'.str_replace($root , '', $path);      define('APPLI_URL', $path);      unset($path);      unset($root);      unset($host); } function fin_content($content) { return $content; } function proteger($name) {      $name = strtolower($name);      $name = preg_replace('/[áâàä]/isU',                    'a',     $name);      $name = preg_replace('/[éêèë]/isU',                    'e',     $name);      $name = preg_replace('/[íîìï]/isU',                    'i',     $name);      $name = preg_replace('/[óôòö]/isU',                    'o',     $name);      $name = preg_replace('/[úûùü]/isU',                    'u',     $name);      $name = preg_replace('/[œ]/isU',                    'oe',     $name);      $name = preg_replace('/[ç]/isU',                    'c',     $name);      $name = preg_replace('/[^a-zA-Z0-9_\-\.]/isU',     '_',     $name);      return $name; } function uploader() {      if (!isset($_FILES["userfile"]))               return null;      if (!is_array($_FILES["userfile"]))               return null;      if (!isset($_FILES["userfile"]["name"]))     return null;      if ($_FILES["userfile"]["name"]=="")          return "Nom de fichier introuvable";      $name = $_FILES["userfile"]["name"];      if (ereg('((php)([0-9]?))$',$name))               return "Les fichiers PHP sont interdits";            $name = proteger($name);      if (is_file('./'.$name))                         return "Ce fichier existe deja sur le serveur, veuillez le renommer ou en choisir un autre !";      if (move_uploaded_file($_FILES["userfile"]["tmp_name"], './'.$name))      {           if (!is_file('./'.$name))                    return "Erreur de copie de fichier - Merci de réenvoyer le fichier";                      return "Votre fichier a bien été envoyer.<br>Copiez le lien suivant et collez le dans votre message. <a href='".APPLI_URL.$name."'>".APPLI_URL.$name."</a>";      }            return "Erreur lors de la copie du fichier.";  } $msg = uploader(); ?> <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> <html>      <head>           <title>Index des fichiers - <?php echo APPLI_URL; ?></title>           <meta name="robots"           content="none" >           <meta name="Title"               content="Index des fichiers - <?php echo APPLI_URL; ?>" >            <meta name="Author"               content="Laurent Minguet" >           <meta name="Reply-to"          content="laurent.minguet@gadz.org" >             <meta name="Copyright"          content="(c)2007 Laurent Minguet" >           <meta name="Identifier-URL"     content="<?php echo APPLI_URL; ?>" >           <meta name="Revisit-after"     content="none" >           <meta http-equiv="Content-Type"     content="text/html; charset=windows-1252" >           <style type='text/css'>* { font-family: verdana; font-size: 11px; }</style>      </head>      <body>           <div style="border: solid 1px black; padding: 10px;">                <form enctype='multipart/form-data' action='./' method='post' style="padding:0; margin:0;">                     Upload de fichier : <input name='userfile' type='file'> <input type='submit' value='Envoyer le fichier'>                </form>           </div>           <br>           Pour ajouter un fichier à un message du forum, vous devez :<br>            - cliquer sur "<b>parcourir</b>" et choisir le fichier<br>            - cliquer sur "<b>Envoyer le fichier</b>"<br>            - une fois le chargement terminer, suivez les intructions qui apparaitront ci-dessous.<br>            <br>           <span style="color: #FF0000; font-weight: bold;"><?php echo $msg; ?></span><br>           <br>           <table cellspacing="1" cellpadding="5">                <tr bgcolor="#aaaaaa">                     <td colspan="4" align="center" width="100">                          <?php echo APPLI_URL; ?>                     </td>                </tr>               <tr bgcolor="#aaaaaa">                     <td align="left" width="100">                          <a href="index.php?ordre=0" >Nom       </a>                     </td>                     <td align="center" width="150">                          <a href="index.php?ordre=1" >Modifié le</a>                     </td>                     <td align="center" width="80" >                          <a href="index.php?ordre=2" >Taille    </a>                     </td>                     <td align="center" width="100">                          <a href="index.php?ordre=3" >Type      </a>                     </td>                </tr> <?php      $handle=opendir('.');      rewinddir($handle);            $nom = array();      $path = array();      $url = array();      $date = array();      $nbo = array();      $exten = array();            $i=0;      while ($file = readdir($handle))      {           if (($file!=".") && ($file!="..") && ($file!="index.php") && ($file!="error.php") &&($file!=".htaccess"))           {                $nom[]          = $file;                $nom_min[]     = strtolower($file);                $pa               = pathinfo($file);                $path[]          = $pa;                $url[]          = rawurlencode($file);                $date[]          = filemtime($file);                $nbo[]          = (int)(filesize($file));                $ex               = filetype($file);                                if ($ex == "dir") continue;                else            { $ex = $pa["extension"];}                                $exten[] = $ex;                $i = $i+1;           }      }            $nb = $i;      $ordre = 0;      if (isset($_GET['ordre'])) $ordre = $_GET['ordre'];      $a_classer = $nom_min;      if ($ordre==1) $a_classer = $date;      if ($ordre==2) $a_classer = $nbo;      if ($ordre==3) $a_classer = $exten;            if (sizeof($a_classer)>0)      asort($a_classer);      reset($a_classer);             $i = 0;      while (list ($key, $vide) = each ($a_classer))      {           $i++;           if (($i%2)==0)     {echo "<tr bgcolor='#E8E8E8'>\n";}           else          {echo "<tr bgcolor='#D0D0D0'>\n";}                      if ($nbo[$key]>1024*1024){ $taille = (0.1*(int)(10*$nbo[$key]/(1024*1024)))." Mo";}           else                { $taille = (0.1*(int)(10*$nbo[$key]/(1024)))." Ko";     }           echo "     <td><a href='".$url[$key]."'>".$nom[$key]."</a></td>\n";           echo "     <td align = 'center'>".date("d M Y H:i", $date[$key])."</td>\n";           echo "     <td align = 'center'>".$taille."</td>\n";           echo "     <td align = 'center'>".$exten[$key]."</td>\n";           echo "</tr>\n";         } ?>           </table>           <br><br>           <h5 align=right>Sc