Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème d'upload de fichier trop lourd :/

Sujet résolu
    15 février 2019 à 11:56:05

    Bonjour mon formulaire d'upload de fichier ne fonctionne pas avec des fichiers dépassant 1Mo :/ et je ne sais vraiment pas pourquoi :/ Si quelqu'un trouve une erreur et veut bien m'aider :) Je suis dessus depuis hier midi --'.

    Je suis désolé mais je pense que c'est un problème de php et non d'AJAX vu que j'avais déjà un problème pour upload sans ma progressBar :/

    Le formulaire est une partie de l'AJAX 
    
    <script> // mon script de progress bar
                                function _(elmt)
                                {
                                    return document.getElementById(elmt);
                                }
                                function uploadFile()
                                {
                                    var file = _("fileimage").files[0];
                                    alert(file.name+" | "+file.size+" | "+file.type);
                                    var formdata = new FormData();
                                    formdata.append("fileimage",file);
                                    var ajax = new XMLHttpRequest();
                                    ajax.upload.addEventListener("progress", progressHandler, false);
                                    ajax.addEventListener("load", completeHandler,false);
                                    ajax.addEventListener("error", errorHandler, false);
                                    ajax.addEventListener("abort", abortHandler, false);
                                    ajax.open("POST", "file_upload_parser.php");
                                    ajax.send(formdata);
                                }
                                function progressHandler(event)
                                {
                                    _("loaded_n_total").innerHTML = "Uploaded "+event.loaded+" bytes of "+event.total + "bytes";
                                    var percent = (event.loaded / event.total) * 100;
                                    _("progressBar").value = Math.round(percent);
                                    _("status").innerHTML = Math.round(percent)+"% uploaded ... Please wait";
                                }
                                function completeHandler(event)
                                {
                                    _("status").innerHTML = event.target.responseText;
                                    _("progressBar").value = 0;
                                }
                                function errorHandler(event)
                                {
                                    _("status").innerHTML = "Upload Failed";
                                }
                                function abortHandler(event)
                                {
                                    _("status").innerHTML = "Upload Aborted"
                                }
                                </script>
                            </head>
                             <body class="bodyadmin">
                                <div class="blocpageadmin">
                                    <section class="sectionadmin">
                                        <article id="newactuality">
                                            <p class="contBDD">Formulaire pour publier un nouvel article dans la page ACCUEIL </p>
                                            <form method="post" action="areaadmin.php" enctype="multipart/form-data" id="upload_form">
                                                <label for="title" class="articletitlelabel">Titre *  </label><input type="text" name="title" class="articletitle" size="30" maxlength="50" required placeholder="Votre titre"><br/><br/>
                                                <textarea name="message" id="message" rows="8" cols="60" placeholder="Votre article (actualités)" class="articlebbd" required="Veuillez compléter ce champ." maxlength="1500"></textarea><br/>
                                                <!--<label for="fileimage" class="label-file">Choisir une image</label>-->
                                                <input type="file" name="fileimage" id="fileimage" class="filebdd"><br/>
                                                <input type="button" value="Upload File" onclick="uploadFile()">
                                                <progress  id="progressBar" value="0" max="100" style="width: 300px; color:green;"></progress>
                                                <h3 id="status"></h3>
                                                <p id="loaded_n_total"></p>
                                                <input type="submit" name="Envoyer" value="Publier" class="sendnews" title="Cliquez-ici pour publier !" onclick/>
                                            </form>
                                        </article>
                                    </section>
                                </div>
                            </body>
                        </html>
    
    La deuxième partie de l'AJAX 
    
    <?php
    	$fileName = $_FILES["fileimage"]["name"]; // The file name
    	$fileTmpLoc = $_FILES["fileimage"]["tmp_name"]; // File in the PHP tmp folder
    	$fileType = $_FILES["fileimage"]["type"]; // The type of file it is
    	$fileSize = $_FILES["fileimage"]["size"]; // Filse size in bytes
    	$fileErrorMsg = $_FILES["fileimage"]["error"]; // 0 for false ... and 1 for true
    
    	if (!$fileTmpLoc) // if file not chosen
    	{
    		echo "ERROR: Please browse for a file before clicking the upload button.";
    		exit();
    	}
    	if (move_uploaded_file($fileTmpLoc, "upload/$fileName")) 
    	{
    		echo "$fileName upload is complete";
    	}
    	else
    	{
    		echo "move_uploaded_file function failed";
    	}
    ?>
    • Partager sur Facebook
    • Partager sur Twitter

    Le dev web est outil de création illimité.

      15 février 2019 à 12:00:34

      Bonjour,

      Il faut regarder soit dans le php.ini pour voir la taille des fichier ma, soit augmenter cette valeur dans le formulaire.

      La doc php

      • Partager sur Facebook
      • Partager sur Twitter
        15 février 2019 à 12:03:38

        D'accord je vais regarder au niveau php.ini, j'ai l'erreur : ERROR : please browse for a file [...]

        Et cette erreur s'afffiche avant l'envoie ;) . Ma taille max est de 15Mo et j'ai une erreur qui apparaît si ça dépasse ( vérifiée et testée). 

        La taille maximale était de 2M et j'essayais avec des fichiers >3Mo tu as donc trouvé je pense :) En revanche ça ne veut toujours pas x) Je vais tenter de redémarrer le serveur

        Ca fonctionne bien avec des fichiers un peu plus lourds (après avoir redémarrer WAMP) mais pas tous ( fichier de 13Mo qui m'affiche l'erreur qu'un fileimage au niveau des lignes 69 à 73 n'existe pas ??? Je ne comprends pas pourquoi ça m'affiche cette erreur alors qu'avec d'autres le code est exécuter sans difficultés ..

        -
        Edité par ApoSkunz 15 février 2019 à 12:14:06

        • Partager sur Facebook
        • Partager sur Twitter

        Le dev web est outil de création illimité.

          15 février 2019 à 12:18:11

          Avant de faire les lignes 69 à 73, il est bien de tester l'existence de la variable $_FILES
          • Partager sur Facebook
          • Partager sur Twitter
            15 février 2019 à 12:23:31

            J'ai testé avec un isset et un empty sur ma superglobale $_FILES mais rien n'y fait l'erreur persiste :/

            Bon je viens de faire quelques tests en plaçant un if !empty avant ces 5lignes là mais rien n'y fait pour les fichiers trop gros il semblerait que $_FILES est perdu puisque mon message " rentre dans le if" s'affiche  mais le name="fileimage" n'est pas retrouvé x) :/

            <?php
            	if (!empty(($_FILES)))
            	{
            		$fileName = $_FILES["fileimage"]["name"]; // The file name
            		$fileTmpLoc = $_FILES["fileimage"]["tmp_name"]; // File in the PHP tmp folder
            		$fileType = $_FILES["fileimage"]["type"]; // The type of file it is
            		$fileSize = $_FILES["fileimage"]["size"]; // Filse size in bytes
            		$fileErrorMsg = $_FILES["fileimage"]["error"]; // 0 for false ... and 1 for true
            		echo "Rentre dans le if";
            	}
            
            	if (!$fileTmpLoc) // if file not chosen
            	{
            		echo "ERROR: Please browse for a file before clicking the upload button.";
            		exit();
            	}
            	if (move_uploaded_file($fileTmpLoc, "upload/$fileName")) 
            	{
            		echo "$fileName upload is complete";
            	}
            	else
            	{
            		echo "move_uploaded_file function failed";
            	}
            ?>
            et voilà les codes erreurs affichés aussi avec un isset à la place de !empty ( mêmes résultats )

            -
            Edité par ApoSkunz 15 février 2019 à 12:46:10

            • Partager sur Facebook
            • Partager sur Twitter

            Le dev web est outil de création illimité.

              15 février 2019 à 12:46:01

              La suite du code devrait aussi être dans le if.

              Que donne un var_dump($_FILES) ? avant le if

              • Partager sur Facebook
              • Partager sur Twitter
                15 février 2019 à 12:52:21

                ah oui merci pour la remarque su l'inclusion du if !

                voilà ce que contient la variable :

                <small>C:\wamp64\www\projet_test\projet_site\home\administrateur\file_upload_parser.php:2:</small>

                array(size=0)

                 empty

                Donc visiblement il récupère aucune information de l'image en question :/

                -
                Edité par ApoSkunz 15 février 2019 à 12:53:19

                • Partager sur Facebook
                • Partager sur Twitter

                Le dev web est outil de création illimité.

                  15 février 2019 à 12:56:15

                  Ce qui est bizarre c'est que tu rentre dans le if même si $_FILES est vide

                  As-tu regardé dans les logs de wamp ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 février 2019 à 12:59:27

                    Euh oui mais là en fait l'erreur que j'avais balancer c'était avec un isset si je test avec !empty je ne rentrer pas dans le if puisque la variable est vide. 

                    Euh je vais me renseigner sur ce que c'est ^^

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Le dev web est outil de création illimité.

                      15 février 2019 à 12:59:38

                      Salut,

                      Quelle est la valeur de ton post_max_size ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                      le bienfait n'est jamais perdu
                        15 février 2019 à 13:04:06

                        8M merci à toi :)

                        Je vais aller tester en redémarrant x). Il y a dautres variables de ce type dans php.ini ?

                        -
                        Edité par ApoSkunz 15 février 2019 à 13:06:08

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Le dev web est outil de création illimité.

                          15 février 2019 à 13:07:02

                          Elle doit être supérieure à upload_max_filesize. En gros tu dois avoir memory_limit > post_max_size > upload_max_filesize 

                          -
                          Edité par WillyKouassi 15 février 2019 à 13:09:03

                          • Partager sur Facebook
                          • Partager sur Twitter
                          le bienfait n'est jamais perdu
                            15 février 2019 à 13:08:23

                            D'accord donc si mon upload_max est à 100M vaut que je mette une valeur >=100M ?

                            ça a bien fonctionné merci beaucoup à vous deux :)

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Le dev web est outil de création illimité.

                            problème d'upload de fichier trop lourd :/

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown