Bonjour à tous,

Je m'arrache les cheveux (je n'en ai déjà plus beaucoup) avec une requête jquery vers une api qui
répond en json.

La particularité de cette requête est qu'elle envoie à la fois un fichier image au format BMP et des éléments JSON.

J'ai testé cette requête avec POSTMAN et ceci a fonctionné. En revanche, avec mon script cela ne fonctionne pas.

Voici le formulaire qui demande le fichier image:
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<form role="lm2sformuploadimage" id="lm2sformuploadimage" enctype="multipart/form-data">
        <label for="overlayimage"  class="h6"><span style="white-space:nowrap;color: #7e0219">Votre logo</span></label><BR>
        <input type="file" id="file" name="uploadimage" accept="image/bmp">
        <button type="submit" class="btn-xsbtn-success">envoyer</button>
        </form>

Voici le script qui envoie la requête:

Code : 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
function submituploadimage(){
var fichier = $('input[name="uploadimage"]').get(0).files[0];
var formData = new FormData();
var json = [];
 
json.push(
                 {
                 "apiVersion":"1.0",
                 "context": "abc",
                 "method": "uploadOverlayImage",
                 "params":
                 {
                        "scaleToResolution": "false"
                 },
                }
                );
 
    //JSON obj
    formData.append('image', fichier);
    formData.append('json', JSON.stringify( json ));
        $.ajax({
            "url": "/axis-cgi/uploadoverlayimage.cgi",
            "method":"POST",
            "timeout": 0,
            "processData":false,
            "mimeType": "multipart/form-data",
            "contentType": false,
            "data": formData,
            "complete": function(data){
                            alert("success");
                    }
          });
}
A l’exécution, l'API me renvoie toujours la même erreur:

    apiVersion	"1.0"
    method	"unknown"
    error	Object { code: 1004, message: "invalid request" }
    code	1004
    message	"invalid request"
Hors je sais que les paramètres envoyés sont les bons, d'ailleurs cette requête quasi identique
envoyée par POSTMAN fonctionne:

Code : 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
var form = new FormData();
form.append("json", fileInput.files[0], "/D:/uploadoverlay/json.txt"); /* dans ce fichier se trouvent les mêmes paramètres que dans la requête précédente */
form.append("image", fileInput.files[0], "/D:/uploadoverlay/exemplebmp.bmp");
 
var settings = {
  "url": "http://192.168.1.38/axis-cgi/uploadoverlayimage.cgi",
  "method": "POST",
  "timeout": 0,
  "processData": false,
  "mimeType": "multipart/form-data",
  "contentType": false,
  "data": form
};
 
$.ajax(settings).done(function (response) {
  console.log(response);
});
J'ai comme l'impression que la requête json n'est pas comprise, tronquée ou mal interprétée.

J'ai tenté beaucoup de choses sans succès, avez vous une idée ?
D'avance merci.