PROJET AUTOBLOG


Shaarli - le hollandais volant

Site original : Shaarli - le hollandais volant

⇐ retour index

Note : en JS : fileReader.readAsBinaryString() est bugué ?

lundi 16 septembre 2013 à 00:53
Étrange : je suis en train de bricoler un nouvel outil, qui donne le MD5, SHAx… d’un message ou d’un fichier.

J’ai un fichier où le MD5 calculé n’est pas correct (il diffère du md5 donné par md5sum).

Néanmoins, quand je teste le code base64 du fichier, la même fonction JS donne le md5 correcte que md5sum pour le code base64.

En gros : le code64 a la même signature dans un terminal et dans le navigateur, mais si je met le fichier directement, ça ne marche pas.

J’en déduis que le fichier n’est pas correctement lu par JavaScript.
Certaines sources disent que fileReader.readAsBinaryString() est déprécié. Ok.
Je pourrais utiliser .readAsDataUrl() qui donne le base64, et décoder ça, mais c’est n’est pas une solution.

ÉDIT : nan, ça marche pas non plus de le récupérer en B64 et décoder ça. Il doit y avoir un problème : seuls certains fichiers sont concernés…

Ce qui me fait chier c’est que le .readAsDataURL() donne le bon base64 d’un fichier mais que .readAsBinaryString() ne donne pas le bon code binaire d’un fichier… Alors que c’est la même API HTML5 en fait.

Pourtant un bindata.length() est bien de la même taille que le nombre d’octet du fichier.

J’en déduis que JS ne peut pas manipuler des données binaires correctement.