Bonjour

Je ne parviens pas à mettre en place une requête un peu particulière dont le schéma est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
-->   files + paramètres
<--  filescontent + paramètres
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.

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) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Le xhr.responseText ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[[0,[],"{ \"rootnode\": { \"name\": \"cube.obj ....
Il est de la forme [ [ integer, [ strings ], string ] .. ] ou la dernière string est le filecontent

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.