Envoyer un tableau d'octets au serveur

2 réponses
Avatar
Yliur
Bonjour

J'ai un tableau d'octets javascript que j'aimerais expédier sur le
serveur et je cherche la meilleure solution...

* Quand il s'agit d'expédier des fichiers, je déclare un formulaire
"multipart" et un champ <input type="file" ...> et ça expédie les
octets du fichier en plus des autres champs du formulaire. Je ne sais
pas très bien comment ça fonctionne, je crois comprendre que la
requête http est formée différemment pour séparer les infos
textuelles et binaires, ça marche un peu tout seul (côté serveur
c'est du java et Spring se charge de séparer les morceaux). Donc je
suis curieux de savoir comment ça fonctionne (juste par curiosité) et
je me demande si ce mécanisme peut servir pour expédier un tableau
d'octets donné vers le serveur.

* Autre idée : je traduis mon tableau d'octets en une chaîne
représentant les valeurs hexadécimales des octets et je l'expédie
comme un paramètre texte quelconque. Il faut que je trouve ou que
j'écrive une fonction de conversion du tableau en chaîne (ce n'est
pas très difficile a priori mais s'il y en a une standard ou toute
prête quelque part je suis preneur). En plus de la fonction à écrire,
un des problèmes est que la requête va être deux fois plus grosse et
que ça peut devenir gênant dans mon cas.

Voilà où j'en suis. Des idées, avis, remarques ou suggestions ?

Merci

Yliur

2 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 16/02/2015 18:02, Yliur a écrit :

J'ai un tableau d'octets javascript que j'aimerais expédier sur le
serveur et je cherche la meilleure solution...



Je ne sais pas répondre à cette question, je voudrais juste répondre à
ton « autre idée ».

[...]

* Autre idée : je traduis mon tableau d'octets en une chaîne
représentant les valeurs hexadécimales des octets et je l'expédie
comme un paramètre texte quelconque. Il faut que je trouve ou que
j'écrive une fonction de conversion du tableau en chaîne (ce n'est
pas très difficile a priori mais s'il y en a une standard ou toute
prête quelque part je suis preneur). En plus de la fonction à écrire,
un des problèmes est que la requête va être deux fois plus grosse et
que ça peut devenir gênant dans mon cas.



Plutôt que d'encoder les valeurs en hexadécimal, ce qui multiplie par
deux la taille des données échangées, je te suggère de les coder en
base64 ou en base64url, ce qui ne multiplie la taille que par 4/3.

On trouve facilement sur la toile des fonctions de conversion. Je pense
que la plupart du temps les données de départ sont déjà sous forme de
String au lieu de tableau d'entiers, mais il ne devrait pas être très
difficile de les adapter.
Avatar
Yliur
Le Wed, 18 Feb 2015 21:14:01 +0100
Olivier Miakinen <om+ a écrit :

> * Autre idée : je traduis mon tableau d'octets en une chaîne
> représentant les valeurs hexadécimales des octets et je l'expédie
> comme un paramètre texte quelconque. Il faut que je trouve ou que
> j'écrive une fonction de conversion du tableau en chaîne (ce n'est
> pas très difficile a priori mais s'il y en a une standard ou toute
> prête quelque part je suis preneur). En plus de la fonction à
> écrire, un des problèmes est que la requête va être deux fois plus
> grosse et que ça peut devenir gênant dans mon cas.

Plutôt que d'encoder les valeurs en hexadécimal, ce qui multiplie par
deux la taille des données échangées, je te suggère de les coder en
base64 ou en base64url, ce qui ne multiplie la taille que par 4/3.

On trouve facilement sur la toile des fonctions de conversion. Je
pense que la plupart du temps les données de départ sont déjà sous
forme de String au lieu de tableau d'entiers, mais il ne devrait pas
être très difficile de les adapter.



Effectivement, je ne connais pas bien ces encodages et je vais creuser.

Merci.