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