Je voudrais télécharger une image et poster d'autres variables vers la servlet et je n'ai aucune erreur dans ajax, par-contre l'image n'est jamais enregistrée.

Voilà mon form
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<form id="formAddProduit" enctype="multipart/form-data" method="post" action="">
            <input type="file" name="img[]" id="img" />
            <input type="button" id="btn_add_produit" value="Ajouter produit"/>
        </form>


voici ma fonction jQuery ajax :

Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 
$("#formAddProduit #btn_add_produit").click(function(e){
                   e.preventDefault();
                   var fd=new FormData();
                   console.log("image :",$("#img").get(0).files[0]);
                   fd.append("img",$("#img").get(0).files[0]);
                    fd.append("role","addproduit");
                    $.ajax({
                        url:"Ajax",
                        method:"POST",
                        dataType:"json",
                        processData: false, 
                        contentType :false,
                        data:fd
 
                    })
                    .done(function(data){
                        console.log("Done :",data);
                    })
                    .fail(function(err){
                        alert("Erreur addproduit ajax :",err.responseText);
                    });
                });

voici ma servlet :

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
else if(request.getParameter("role").equals("addproduit")) {
 
 
 
 
      FileItemFactory factory = (FileItemFactory) new DiskFileItemFactory();
      ServletFileUpload upload = new ServletFileUpload(factory);
 
 
      List
         uploadedItems = null;
      FileItem
         fileItem = null;
      String
         // Path to store file on local system
         filePath = "C:\\Users\\hp\\Documents\\NetBeansProjects\\Site_achat_enligne_5emeannee\\web\\img\\uploadFiles";
 
      try
      {
         // iterate over all uploaded files
         uploadedItems = upload.parseRequest(request);
 
         Iterator
            i = uploadedItems.iterator();
 
         while (i.hasNext())
         {
             ind.put("nom_fichier","teste....");
            fileItem = (FileItem) i.next();
 
            if (fileItem.isFormField() == false)
            {
               if (fileItem.getSize() > 0)
               {
                  File
                     uploadedFile = null;
                  String
                     myFullFileName = fileItem.getName(),
                     myFileName = "",
                     slashType = (myFullFileName.lastIndexOf("\\")
                        > 0) ? "\\" : "/";    // Windows or UNIX
 
                  int
                     startIndex =
                        myFullFileName.lastIndexOf(slashType);
 
                  // Ignore the path and get the filename
                  myFileName = myFullFileName.substring
                    (startIndex + 1, myFullFileName.length());
 
                  // Create new File object
                  uploadedFile = new File(filePath, myFileName);
 
                  // Write the uploaded file to the system
                  fileItem.write(uploadedFile);
               }
            }
         }
      }
      catch (FileUploadException e)
      {
          ind.put("erreurUpload","erreur upload");
         e.printStackTrace();
      }
      catch (Exception e)
      {
          ind.put("erreurExcep","erreur excep");
         e.printStackTrace();
      }
            json= new Gson().toJson(ind);
           response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write(json);  
        }

Le problème se situe dans la ligne 27 du code servlet, parce que je ne reçois pas la variable ind dans le success d'ajax.

Si je la met avant le while dans ce cas je reçois bien la variable ind.

Pourquoi le script n'entre pas dans la boucle while ?!