Bonjour je suis tout nouveau ici j'aurais besoin d'aide , je suis en train de faire me faire mon projet pour la fin de ma formation . Je souhaite mettre des recettes avec image sur ma base donnée . Mais malheureusement impossible mon echo m'informe il y a un problème de téléchargement de mon fichier ... individuellement ca fonctionne bien envoie d'image et texte mais ensemble impossible ? des pistes s'il vous plait?
Modifié par christplau (30 Oct 2019 - 12:14)
Modérateur
Bonjour,

pour envoyer un fichier, c'est un peu plus compliqué.

déjà $('#fileUpload').val() ne renvoie que le nom du fichier, donc le fichier est absent de ta requête.

Il faut récupérer le fichier, l'envoyer et mettre les bonnes en-têtes dans ta requête. Heureusement, il existe un objet FormData qui construit automatiquement un objet prêt à l'envoi en Ajax:

Voici un petit script qui enverra le formulaire en ajax à upload.php exactement comme si il avait été soumis sans javascript

<form id="myForm" name="myForm">
  <div>
    <label for="username">Enter name:</label>
    <input type="text" id="username" name="username">
  </div>
  <div>
    <label for="useracc">Enter account number:</label>
    <input type="text" id="useracc" name="useracc">
  </div>
  <div>
    <label for="userfile">Upload file:</label>
    <input type="file" id="userfile" name="userfile">
  </div>
<input type="submit" value="Submit!">
</form>
<script>
$('#myForm').on('submit', function(e){
  e.preventDefault();
  var formData = new FormData(document.getElementByID('myForm'));
  $.ajax({
    url: 'upload.php,
    type: "POST",
    data: formdata,
    processData: false, // pour que jquery envoie directement formData
    contentType: false, // le content-type est ajouté par FormData, pas par jQuery
    success: function (result) {
         // Faire quelque chose
    }
  });
});
</script>

Modifié par kustolovic (30 Oct 2019 - 13:16)
Meilleure solution
kustolovic a écrit :
Bonjour,

pour envoyer un fichier, c'est un peu plus compliqué.

déjà $('#fileUpload').val() ne renvoie que le nom du fichier, donc le fichier est absent de ta requête.

Il faut récupérer le fichier, l'envoyer et mettre les bonnes en-têtes dans ta requête. Heureusement, il existe un objet FormData qui construit automatiquement un objet prêt à l'envoi en Ajax:

Voici un petit script qui enverra le formulaire en ajax à upload.php exactement comme si il avait été soumis sans javascript

&lt;form id="myForm" name="myForm"&gt;
  &lt;div&gt;
    &lt;label for="username"&gt;Enter name:&lt;/label&gt;
    &lt;input type="text" id="username" name="username"&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;label for="useracc"&gt;Enter account number:&lt;/label&gt;
    &lt;input type="text" id="useracc" name="useracc"&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;label for="userfile"&gt;Upload file:&lt;/label&gt;
    &lt;input type="file" id="userfile" name="userfile"&gt;
  &lt;/div&gt;
&lt;input type="submit" value="Submit!"&gt;
&lt;/form&gt;
&lt;script&gt;
$('#myForm').on('submit', function(e){
  e.preventDefault();
  var formData = new FormData(document.getElementByID('myForm'));
  $.ajax({
    url: 'upload.php,
    type: "POST",
    data: formdata,
    processData: false, // pour que jquery envoie directement formData
    contentType: false, // le content-type est ajouté par FormData, pas par jQuery
    success: function (result) {
         // Faire quelque chose
    }
  });
});
&lt;/script&gt;


merci de ta réponse aussi rapide je vais tester ca je te dit et niveau php ca te semble correct ?