Bonjour
Je ne parviens pas à mettre en place une requête un peu particulière dont le schéma est le suivant :
L'utilisateur upload des fichiers avec quelques options, le serveur converti les fichiers et renvoie le résultat de la conversion avec quelques paramètres de retour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 --> files + paramètres <-- filescontent + paramètres
Comme il peut s'agir de gros fichiers le but est de déléguer le maximum de boulot au client (y compris le parsing).
- 1ère question : en suivant cette logique y a t-il moyen de renvoyer un objet files au client, de la même façon qu'un objet files est envoyé au serveur, ceci afin de déléguer la lecture du fichier renvoyé au client ?
- 2èm question : actuellement ce n'est pas le cas, le fichier converti est lu en php avec file_get_contents et renvoyé en texte, le problème est que j'ai une erreur js sur JSON.parse(xhr.responseText) :
Le xhr.responseText ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Il est de la forme [ [ integer, [ strings ], string ] .. ] ou la dernière string est le filecontent
Code : Sélectionner tout - Visualiser dans une fenêtre à part [[0,[],"{ \"rootnode\": { \"name\": \"cube.obj ....
Voici le code
Code js : 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 var formData = new FormData(); var cnt = 0; for ( ext in toload ) { var arr = toload[ext]; for(var i= 0; i < arr.length; i++) { var file = arr[i]; formData.append('files[]', file, file.name); cnt++; } } formData.append('count', cnt); ... // + quelques autres paramètres ajoutés à la formData var xhr = new XMLHttpRequest(); xhr.open('POST', 'modules/Import.php', true); xhr.addEventListener('load', function() { document.body.innerHTML = xhr.responseText; // < Erreur ici ... } xhr.send(formData);
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 if ( $outcod == 0 ) { $content = file_get_contents( $dest ); // $dest est le fichier converti à renvoyer $content = str_replace( array("\r", "\n", "\t"), '', $content ); if ( strlen($content) > 0 ) return [ $outcod, $out, $content ]; else return [ $outcod, $out, $file ]; } else return [ $outcod, $out, $file ]; }
Quel est le problème de JSON.parse(xhr.responseText) ?
Comment feriez vous ça sachant qu'encore une fois il peut y avoir des gros fichiers dont la lecture/parsing devrait à mon avis être fait le plus possible coté client ?
En vous remerciant par avance.
Partager