le 08/01/2005 à 19:05
mobman02
Bonjour,
j'ai enfin reussi (apres de tres tres tres nombreuse prise de tete) a coder un script d'upload convenable.
Il fonctionne en interne ! Ué ! GIGA !
mais, c'est le gros boxon, et, je me suis melanger les pinceau...
Alors si quelqu'un pouvé essayer de le faire "propre" et aussi rectifier certains truc (comme par exemple passer la variable $dirname dans le move_uploded_file, parce que moi a chaque fois que j'ai essayer ca marchais plus.)
Voila, est-ce bien coder aussi ?
j'ai enfin reussi (apres de tres tres tres nombreuse prise de tete) a coder un script d'upload convenable.
Il fonctionne en interne ! Ué ! GIGA !
mais, c'est le gros boxon, et, je me suis melanger les pinceau...
Alors si quelqu'un pouvé essayer de le faire "propre" et aussi rectifier certains truc (comme par exemple passer la variable $dirname dans le move_uploded_file, parce que moi a chaque fois que j'ai essayer ca marchais plus.)
Voila, est-ce bien coder aussi ?
<?
// l'input de l'uploader porte le nom de Fichier, donc touts les tests porteront sur les
// variables suivantes :
// Fichier_name : le nom du fichier
// Fichier_type : le type de fichier plain pour txt, gif pour gif pjpeg pour jpg
// Fichier_size : la taille du fichier
// SI $Fichier est à none c'est une erreur. (j'espere que ca renvoie none !)
// La fonction stristr test si une sous-chaine est présente dans une chaine principale
$Fichier = $_FILES['Fichier']['name']; // ca renvoie none nan ?
$Fichier_name = $_FILES['Fichier']['name']; //nom reel de l'image
$Fichier_size = $_FILES['Fichier']['size']; //poid de l'image en octet
$Fichier_type = $_FILES['Fichier']['type'];//type de l'image
$tmp = $_FILES['Fichier']['tmp_name'];//nom temporaire
// Les variables :
$max_size = 100000; // 100ko
$dirname = './images_up/'; // chemin de destination des fichiers depuis la racine du script
// on test deja s'il a eu upload cad que $up == ok
$up = addslashes(htmlspecialchars($_GET['up']));
if ($up == 'ok')
{
// il s'agit d'une image on recupere un tableau de caracteristiques
// de l'image pour les tests.
if ($Fichier != "none" && !stristr($Fichier_type, "plain")) {
$tab = getimagesize($tmp); }
// test une erreur de taille de fichier,
if ($Fichier_size > $max_size) {
echo "La taille du fichier n'est pas correct"; }
// test si erreur dans la variable $Fichier
else if (!$Fichier || $Fichier == "none") {
echo "Ya pas de fichier."; }
else if (strpos($Fichier_name,'\\') || strpos($Fichier_name, '/')) {
echo "Le format du fichier n'est pas correct"; }
// test les extensions des fichiers meme si le test n'est pas tres secure
// ca fait un test de plus :o)
else if (!stristr($Fichier_name, ".jpg") && !stristr($Fichier_name, ".jpeg") && !stristr($Fichier_name, ".gif") && !stristr($Fichier_name, ".JPG"))
{
echo "Le format du fichier n'est pas correct, jpg ou gif uniquement";
}
// je test si l'image est bien une image, si
// une personne renomme un .doc en .jpg par exemple ce test suffit a annuler l'upload
else if (!$tab[0] && !stristr($Fichier_type, "image")) {
echo "Le format de l'image n'est pas correct"; }
// test le type d'encodage du fichier pour etre bien sur de sa nature
else if (!stristr($Fichier_type, "gif") && !stristr($Fichier_type, "pjpeg") && !stristr($Fichier_type, "jpeg")) {
echo "Le format du fichier n'est pas correct, jpg ou gif uniquement"; }
else
{
// tout s'est déroulé ok, ouf enfin on peut uploader le fichier avec move_up_file
// faut changer le nom si le fichier existe deja
// apres avoir supprimer les espaces avec str_replace.
if (file_exists("$dirname/$Fichier_name")) {
$extention_fichier = substr(strrchr($Fichier_name,'.'),1);
$date = date("U");
$Fichier_name = "$date.$extention_fichier";}
echo "Votre fichier à bien été uploadé merci";
$file_name = str_replace(" ","_",$Fichier_name);
move_uploaded_file($tmp,'./images_up/'.$file_name);
$url = ".$dirname$file_name";
echo "<img src=\"$dirname$file_name\">";
}
}
?>