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:
A l’exécution, l'API me renvoie toujours la même erreur:
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"); } }); }
Hors je sais que les paramètres envoyés sont les bons, d'ailleurs cette requête quasi identiqueapiVersion "1.0" method "unknown" error Object { code: 1004, message: "invalid request" } code 1004 message "invalid request"
envoyée par POSTMAN fonctionne:
J'ai comme l'impression que la requête json n'est pas comprise, tronquée ou mal interprétée.
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 tenté beaucoup de choses sans succès, avez vous une idée ?
D'avance merci.
Partager