Problème upload 1 fichier sur 2 fonctionne

Résolu/Fermé
JuJuCe Messages postés 13 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 23 juin 2013 - 13 oct. 2011 à 13:11
JuJuCe Messages postés 13 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 23 juin 2013 - 13 oct. 2011 à 13:40
Bonjour,


Voila je vous expose mon problème, j'utilise un script d'upload pour des musiques, mais lorsque j'upload un fichier avec l'extension .mp3 , il me renvoi vers une erreur:

"le fichier n'es pas autorisé..."

J'ai fait les test suivant pour essayer de voir d'où viens mon problème:

-J'ai essayer avec différents fichiers .mp3 et il y en a qui fonctionne et d'autre qui ne fonctionne pas avec l'erreur cité ci dessus.

-J'ai enlevé toutes les majuscules, espaces, caractères spéciaux du fichier qui ne fonctionne pas sans succès (a savoir que j'ai testé avec un autre fichier qui comporte des caractères spéciaux espaces et autres et ça fonctionne)

-Mon problème ne peux pas être du à un problème d'extension car elles sont vérifiés et d'autre .mp3 fonctionne, j'ai même essayer de mettre l'extension .MP3 à mon fichier.

-Ce n'est pas un problème de taille maximum puisque je reçois bien le fichier dans le tmp et le array de $_FILES avec un print_r

Pour que vous y voyez plus clair je vous met ci dessous mon code d'upload:


// ############################################################ //
// Définition des variable globales, modifiables à volonté            //
// ############################################################ //
// Récupération du dossier dans lequel le fichier sera uploadé  //
$DESTINATION_FOLDER = "C:\\wamp\www\Site Les chaussettes sauvages\Pages\Medias\Musiques\MP3\\";  // Mettre le chemin de votre repertoire conseil plustot directe sur la racine de votre site car il faut les permissions chmod 777
// Taille maximale de fichier, valeur en bytes          //
$MAX_SIZE = 10000000;                                  //  Indiquer la taille maxi de base la valeure indique 10Ko
/////////////////////////////////////////////////////////////////////////////////////////
// Récupération de l'url de retour//NE PAS MODIFIER CETTE VARIABLE                    //
$RETURN_LINK = "index_admin.php?page=AjoutMusique";// fichier de retour quand une     //
//                                   						erreure de téléchargement//
//                                    						(uploader) se produit    //
///////////////////////////////////////////////////////////////////////////////////////
// Définition des extensions de fichier autorisées (avec le ".")  //
$AUTH_EXT = array(".wma", ".mp3", ".MP3",);//
//d'autre extensions sont possible         //
//**************************************************************************************************///
// Fonction permettant de créer un lien de retour automatique   //

function createReturnLink(){
        global $RETURN_LINK;
        echo "<a href='".$RETURN_LINK."'>Choisir un autre fichier</a><br>";
}

// Fonction permettant de vérifier si l'extension du fichier est
// autorisée.

function isExtAuthorized($ext){
        global $AUTH_EXT;
        if(in_array($ext, $AUTH_EXT)){
                return true;
        }else{
                return false;
        }
}

// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.

if(!empty($_FILES["file"]["name"])){
       
        // Nom du fichier choisi:
        $nomFichier = $_FILES["file"]["name"] ;
        // Nom temporaire sur le serveur:
        $nomTemporaire = $_FILES["file"]["tmp_name"] ;
        // Type du fichier choisi:
        $typeFichier = $_FILES["file"]["type"] ;
        // Poids en octets du fichier choisit:
        $poidsFichier = $_FILES["file"]["size"] ;
        // Code de l'erreur si jamais il y en a une:
        $codeErreur = $_FILES["file"]["error"] ;
        // Extension du fichier
        $extension = strrchr($nomFichier, ".");
        $nom_destination_fichier=$_FILES["file"]["name"];
       
        // Si le poids du fichier est de 0 bytes, le fichier est
        // invalide (ou le chemin incorrect) => message d'erreur
        // sinon, le script continue.
        if($poidsFichier <> 0){
                // Si la taille du fichier est supérieure à la taille
                // maximum spécifiée => message d'erreur
                if($poidsFichier < $MAX_SIZE){
                        // On teste ensuite si le fichier a une extension autorisée
                        if(isExtAuthorized($extension)){
                                // Ensuite, on copie le fichier uploadé ou bon nous semble.
                                $uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nom_destination_fichier);
                                if($uploadOk){
                                     $var_erreure="04";

                                      echo 'Le fichier est uploadé';
										 
										 echo(createReturnLink()."<br>");
                                }else{
                                    $var_erreure="05";
                                        echo("L'upload de votre fichier(de son nouveau nom): " ); echo $nom_destination_fichier; echo (" a échoué !<br><br>");
                                        echo(createReturnLink()."<br>");
                                }
                        }else{
                            $var_erreure="05";
                                echo ("Les fichiers avec l'extension $extension ne peuvent pas être uploadés !<br>");
                                echo (createReturnLink()."<br>");
                                }
                }else{
                    $var_erreure="05";
                        $tailleKo = $MAX_SIZE / 10000000;
                        echo("Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko.<br>");
                        echo (createReturnLink()."<br>");
                }              
        }else{
            $var_erreure="05";
                echo("Le fichier choisi est invalide !<br>");echo $nomFichier ;
                echo (createReturnLink()."<br>");
        }
}else{
    $var_erreure="05";
        echo("Vous n'avez pas choisi de fichier !<br>");
        echo (createReturnLink()."<br>");
}
  
 




Est ce que quelqu'un à une idée sur le sujet et au passage est ce que mon code peu être amélioré et plus propre ?



A voir également:

3 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 oct. 2011 à 13:21
je ne sais pas si ça peut jouer mais tu as une erreur à cette ligne

$AUTH_EXT = array(".wma", ".mp3", ".MP3",);//

une virgule en trop a la fin des valeurs

$AUTH_EXT = array(".wma", ".mp3", ".MP3");//
0
JuJuCe Messages postés 13 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 23 juin 2013
13 oct. 2011 à 13:37
Bonjour Alain_42,

Merci de ta réponse

C'est vrai, j'avais eu le script comme ça au début, je l'avais enlever et comme sa ne marchais pas je l'avais remise en pensant qu'elle était peu être pas la par hasard mais tu as raison elle ne sert à rien je viens de la retiré et mon problème persiste.

Entre temps j'ai fait un echo $_FILES['file']['error'] et il me retourne l'erreur 1 qui dit que la taille maximum n'est pas autorisé, j'ai remplacer les champs suivants dans mon fichier php.ini:

upload_max_filesize = 1024M
post_max_size = 1024M

Ce qui veux dire que mon fichier devrait passer puisque j'ai maximisé la taille à 1Go (et des musique de 1Go on en vois pas tous les jour ;-) )

est ce qu'il y aurai une autre donné dans php.ini à modifier qui empêcherai le fichier de s'uploader (taille en mémoire cache par exemple) ?
0
JuJuCe Messages postés 13 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 23 juin 2013
13 oct. 2011 à 13:40
C'est bon j'ai trouvé mon erreur.

Au fait j'ai oublier d'ajouter des 0 sur les ligne suivantes:

$MAX_SIZE = 1000000000;
$tailleKo = $MAX_SIZE / 1000000000;

Maintenant ça marche mieux ;)

Je passe le post en résolu et désolé d'avoir créer un post pour un problème que j'aurai pu régler plus vite si j'avais fait mieux attention à mon code.
0