Gérer un upload de fichier

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Gérer un upload de fichier

    Bonjour,

    J'ai développé il y'a un moment un module de formulaire maison, que je décline souvent sur mes développement Joomla. Celui-ci propose un nouveau type de module à savoir "Formulaire" et l'ajoute sur le site.
    Tout le code HTML, CSS & PHP est maison et est modifié selon le formulaire à envoyer. Ces formulaires fonctionnent parfaitement et envoie un mail pré-formaté.

    Pour un client, j'ai dû ajouter un upload de fichier pour envoyer une pièce jointe. C'est là que ça se gâte. Impossible d'upload un fichier. Non pas que je n'arrive pas à gérer Jmail ou JInput, mais j'ai un $_FILES vide, niet, nada.
    Je vous montre le code & l'arborescence simplifié :

    Voici le code sans détails et très raccourci, ainsi que l'arborescence :
    arborescence
    Code:
    -modules/
     -mod_form/
      -mod_form.php
      -mod_form.xml
      -tmpl/
       -default.php
       -action.php
       -files/
    default.php : le module donc le formulaire.

    Code HTML:
    <form data-toggle="validator" enctype="multipart/form-data" role="form" method="post" action="<?= $mod; ?>/tmpl/action.php" id="contact_form">
      <!-- plein d'input. -->
    <div class="form-group">
      <div class="row">
        <div class="col-sm-6">
          <input type="hidden" name="MAX_FILE_SIZE" value="20000000" />
          <label for="formUserfile">Ajouter une pièce jointe :</label>
        </div>
        <div class="col-sm-6">
          <input type="file" name="userfile" id="formUserfile">
        </div>
      </div>
    </div>
    <input type="submit" value="Envoyer" class="btn btn-default mybtn text-uppercase" />
    </form>
    <div class="row">
    	<div class="col-xs-12 result">
    	</div>
    </div>
    action.php : l'action du formulaire, géré en AJAX et qui s'affiche dans la partie "result" de mon fichier default.

    Code PHP:
    var_dump($_POST);
    var_dump($_FILES); 
    le $_POST me sort tous mes champs input, alors que $_FILES me sort exactement array(0) { }
    J'ai tout essayé, rien n'y fait.
    Code PHP:
    $file JFactory::getApplication()->input->get('userfile'); 
    : retourne NULL.
    Code PHP:
    $jinput JFactory::getApplication()->input
    : retourne mes champs input MAIS pas mon champ files.
    Code PHP:
    $filename pathinfo($_FILES['userfile']['name'], PATHINFO_FILENAME); 
    : not found.

    Je n'y comprend plus rien. Pourtant j'ai bien le enctype... Est-ce déjà arrivé à quelqu'un ? Je suis dessus depuis 2 jours maintenant et je pense vraiment à abandonner et récupérer un module tout fait d'upload de fichier.
    Dernière édition par Shonen à 03/08/2017, 09h45

  • #2
    Re : Gérer un upload de fichier

    Re.

    Après moultes recherches, le problème viendrait d'Ajax, qui ne supporte pas naturellement l'envoi de fichier avec serialize().
    Le sujet parait complexe, trop pour ce petit projet, et donc je vais passer sur un formulaire standard.

    Je ferme donc ce sujet, car le vrai intitulé aurait été comment envoyer un fichier via ajax, mais là beaucoup de discussions existent déjà.

    Bonne journée.

    Commentaire

    Annonce

    Réduire
    Aucune annonce pour le moment.

    Partenaire de l'association

    Réduire

    Hébergeur Web PlanetHoster
    Travaille ...
    X