Problème uploader fichier [PHP]

Fermé
karottes Messages postés 27 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 9 mars 2009 - 14 juil. 2008 à 02:01
karottes Messages postés 27 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 9 mars 2009 - 14 juil. 2008 à 16:19
Bonjour,
j'ai installé un script d'upload de fichier sur mon serveur ftp sur mon site, donc, je le test, j'upload
un fichier, le message de confirmation de mon upload apparait, merveilleux me dis-je ... Je vais
sur mon serveur ftp, pour vérifier, et je ne trouve pas mon fichier !!!
J'epère avoir une réponse trés rapidement, merci d'avance : voila le script
<?php

error_reporting(E_ALL ^ E_NOTICE);



	

	/* Variables */

	$_AxEVAR[FILEMAXSIZE]	=	10000000; // la taille maximum de fichier -> en byte(0 = Illimité)

	$_AxEVAR[FILETYPE]	=	"STK|PIV|TXT|GIF|JPG|JPEG|MPEG|MP3|BMP|AVI"; // les types des fichiers a uploadé

	$_AxEVAR[LOADTO]	=	"upload/"; // le dossier ou le script va uploader les fichiers

	

	

	/* Afficher le formulaire */

	if(empty($AxEVAR[FILENAME])){


		print("<div align=\"center\">\n");

		print("<form method=\"post\" action=\"$PHP_SELF\">\n");

		print("<table border=0 cellpadding=0 cellsepacing=0 width=\"60%\">\n\n");

		

		print("<tr><td>Fichier &agrave; uploader :</td>\n");

		print("<td><input type=\"file\" name=\"AxEVAR[FILENAME]\" size=30></td>\n");

		print("<td><input type=\"submit\" value=\"Uploader !\"></td></tr>\n\n");

		

		print("</table>\n");

		print("</form>\n");

		print("</div>\n");

		

	}

	

	/* Le script */

	if(IsSet($AxEVAR[FILENAME])){

		

		/* La taille de fichier a uploadé */

		$AxEVAR[FILESIZE]=filesize($AxEVAR[FILENAME]);

		

		/* Vérifier la taille */

		if( ($_AxEVAR[FILEMAXSIZE] == 0) or ($AxEVAR[FILESIZE] <= $_AxEVAR[FILEMAXSIZE]) ){

			

			/* Séléctioner les types ajouter */

			$AxEFTC=substr_count($_AxEVAR[FILETYPE], "|");

			

			/* Séléctioner le type de fichier */

			$AxEFTUP=explode(".", $AxEVAR[FILENAME]);



			$AxEFTUP=strtoupper($AxEFTUP[1]);

			

			for($i=0;$i<=$AxEFTC;$i++){

				

				$AxETYPE=explode("|", $_AxEVAR[FILETYPE]);

				

				/* Vérifier le type */

				if($AxEFTUP == $AxETYPE[$i]){

					

					/* Séléctioner le nom de fichier */

					$AxEVAR[FILENEWNAME]=eregi_replace("[\]", "|", $AxEVAR[FILENAME]);



					$AxEFNT=substr_count($AxEVAR[FILENEWNAME], "||");



					for($x=0;$x<=$AxEFNT;$x++){



						$AxEFNUP=explode("||", $AxEVAR[FILENEWNAME]);

						$X=$x;



					}

					

					

					/* Uploader le fichier */

					if(@copy($AxEVAR[FILENAME], $_AxEVAR[LOADTO]."/".$AxEFNUP[$X])){



						echo "Fichier [$AxEFNUP[$X]] bien uploader";



					}

					else{

						echo "Impossible d'uploader le fichier !";

					}

					

					unset($Error);

					exit();

					

				}

				else{

					echo "Type de fichier invalide [.$AxEFTUP]";

				}

				

			}

			

			

		}

		else{

			echo "Le fichier a dépassé la taille maximum";

		}

			

	}

	

?>
A voir également:

7 réponses

Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 68
14 juil. 2008 à 12:54
Ok, voilà un script pour uploader un fichier vers un serveur :
<?php
    $maxSize = 10000000; // Taille maximale autorisée
    $uploadDir = "mon_dossier_d_upload";
    $typesOk = array(les, extensions, autorisées, ...);
    
    // Formulaire
    echo "<form action=\"$PHP_SELF\" method=\"post\" enctype=\"multipart/form-data\">";
    echo "Fichier : <input type=\"file\" name=\"uploadedFile\" />";
    echo "<input type=\"submit\" value=\"Uploader\"/>"
    echo "</form>";
    // Fin du formulaire

    // On vérifie qu'on a bien un fichier transmis
    if(isset($_FILES['filename'])){
        // On vérifie qu'il ne dépasse pas la taille maximale autorisée
        if($_FILES['size'] <= $maxSize){
            // Vérification du type
            $elem = explode(".", $_FILES['filename']['name']);
            $nb = count($elem);
            if(in_array($elem[$n-1], $typesOk)){
                // On transfère le fichier vers le dossier
                if(move_uploaded($_FILES['filename']['tmp_name'], $uploadDir."/".$_FILES['filename']['name'])) {
                    echo "Transfert réalisé : $uploadDir/".$_FILES['filename']['name'];
                } else {
                    echo "Le transfert n'a pas pu s'effectuer<br />";
                }
            } else {
                echo "Ce type de fichier n'est pas autorisé"
            }
        } else {
            echo "Le fichier est trop gros<br />";
        }
    }
?>


Voilà, ce script devrait marcher pour uploader un fichier vers ton serveur (je ne l'ai pas testé mais ça devrait être ok). Par contre, si ton serveur où tu exécute ce script est différent du serveur où tu souhaites transférer ton fichier, ça ne marchera pas de cette façon.
2
karottes Messages postés 27 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 9 mars 2009 1
14 juil. 2008 à 14:49
UP !!! Désolé, mais c'est vraiment urgent ...
1
baba_cool Messages postés 183 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 1 novembre 2008 23
14 juil. 2008 à 07:35
tu as bien les droits d'ecritures sur ton repertoire distant ( chmod 777)?
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 68
14 juil. 2008 à 07:51
Je crois qu'il faut ajouter l'attribut enctype="multipart/form-data" quand tu veux faire de l'upload. A savoir aussi, tu as la variable $_FILES[] qui contient toutes les infos de fichiers transmis dans ton formulaire ($_FILES['size'] pour la taille, $_FILES['name'] pour le nom du fichier, $_FILES['tmp_name'] pour le chemin d'accès temporaire au fichier, $_FILES['type'] pour obtenir son type MIME etc...). Quand ton fichier est téléchargé sur ton serveur, il est placé dans un répertoire temporaire pour les divers traitement que tu pourrais souhaiter faire dessus. Pour le garder, il faut le sauvegarder autre part. Tu as la fonction move_uploaded() qui fait ça (ou un nom dans le genre)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
karottes Messages postés 27 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 9 mars 2009 1
14 juil. 2008 à 12:25
Pour baba_cool : oui, TOUT est en 777, mon fichier d'upload et mon repertoire d'upload !

Pour Sri Lumpa : Ben en faite le truc c'est que moi, je ne connait que les bases (les bases bases hein, attention !) du PHP donc en gros, ce script je l'ai téléchargé et mis en place juste, seulement ça va faire le sixième que je met en place : sans succès ! Si tu pourrais me donner un script valable (sur la base de celui si par exemple, juste que tu le modifie) ou un lien vers un script qui marche, ce serait super (baba_)cool...
Merci d'avance !

P.S. Cela ne pourrait-il pas venir de mon OS : Linux (Linpus 9.4) ou de quelque chise dans le genre, explorateurr internet, logi. de transfert FTP ... ?
0
karottes Messages postés 27 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 9 mars 2009 1
14 juil. 2008 à 13:01
Sa me fait pareil, tout marche, pas de message d'erreur, mais pas d'upload ... (tu avait oublié 2 ";" ;)
Je suis sur que cela viens d'autre par que du script (tout est en Chmod 777)

J'ai fait un test avec un type de fichier normalement refusé et ... ça ne me met pas le message d'erreur --" je déprime cela fait plus de deux jours et trois nuits que je reste bloqué là ... AIDEZ MOI S.V.P. !!!

J'ai modifé ce code de cette façon :
<?php
    $maxSize = 10000000; // Taille maximale autorisée
    $uploadDir = "upload/";
    $typesOk = array(piv, stk, gif, bmp, jpeg, jpg, pgn, mp3, mpeg, avi);
    
    // Formulaire
    echo "<form action=\"$PHP_SELF\" method=\"post\" enctype=\"multipart/form-data\">";
    echo "Fichier : <input type=\"file\" name=\"uploadedFile\" />";
    echo "<input type=\"submit\" value=\"Uploader\"/>";
    echo "</form>";
    // Fin du formulaire

    // On vérifie qu'on a bien un fichier transmis
    if(isset($_FILES['filename'])){
        // On vérifie qu'il ne dépasse pas la taille maximale autorisée
        if($_FILES['size'] <= $maxSize){
            // Vérification du type
            $elem = explode(".", $_FILES['filename']['name']);
            $nb = count($elem);
            if(in_array($elem[$n-1], $typesOk)){
                // On transfère le fichier vers le dossier
                if(move_uploaded($_FILES['filename']['tmp_name'], $uploadDir."/".$_FILES['filename']['name'])) {
                    echo "Transfert réalisé : $uploadDir/".$_FILES['filename']['name'];
                } else {
                    echo "Le transfert n'a pas pu s'effectuer<br />";
                }
            } else {
                echo "Ce type de fichier n'est pas autorisé";
            }
        } else {
            echo "Le fichier est trop gros<br />";
        }
    }
?>



j'ai un hébergement mutualisé !
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 68
14 juil. 2008 à 15:31
Ton script est bien hébergé au même endroit que ton serveur FTP ? Rajoute des echo un peu partout pour voir ce qui ne va pas, mais je t'avoue que comme ça, je vois pas d'où viens ton problème :s
0
karottes Messages postés 27 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 9 mars 2009 1
14 juil. 2008 à 16:19
Bah mon script est SUR mon serveur FTP ... regarde :
Serveur
               |
               htacces
                            |
                            répertoire "upload"
                                                             |
                                                              répertoire "upload"
                                                              script d'upload

C'est vraiment important, d'autres personne que Sri Lumpa pouvait me répondre, ce serait pas mal ;)
0