IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

array of byte


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 19
    Par d�faut array of byte
    Bonjour,
    Je d�veloppe un module d'envoie de fichier binaire en javascript vers un serveur. Je suis assez limit� dans ce que je peux faire c�t� serveur.

    J'utilise ADODB.Stream pour lire mon fichier sans trop de probl�me et je stock le tout dans un array of byte. Lorsque j'envoie mes octets un par un � mon serveur, je les re�ois bien un � un sauf pour la valeur 0x0D qui correspond � une fin de chaine.

    Je souhaite donc tester la caract�re et si je tombe sur 0x0D, envoyer une chaine texte que je testerais c�t� serveur pour la remplacer par sa valeur correct.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var message = new Array();
     
    var objADOStream = new ActiveXObject("ADODB.Stream");
    objADOStream.Type = adTypeBinary;
    objADOStream.Open();
    objADOStream.LoadFromFile(filename);
     
    for (i = 0; i < objADOStream.Size; i++) {
    	var strContent = objADOStream.Read(1);
    	message[i] = strContent;
    }
     
    objADOStream.Close();
    Mon probl�me :
    Je n'arrive pas � tester message[i]. Que je fasse des "message[i] == 0x0D", message[i] == 13" ou d'autre combinaison, je n'arrive pas � d�tecter ce caract�re.

    D'ailleurs je ne comprend pas, lorsque je debug mon script, j'ai :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    message => Object
    message[i] => Array of byte
    message[i][0] => Byte
    Mais message[i][0] n'est pas accessible d'aucune fa�on.

    Auriez vous des id�es sur ce que je pourrais faire pour m'en sortir ?
    Je suis vraiment coinc� bien qu'ayant beaucoup cherch� sur Internet. J'esp�re que vous pourrez m'aider.

    Merci.

  2. #2
    Expert confirm�
    Avatar de le_chomeur
    Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2006
    Messages
    3 653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 3 653
    Par d�faut
    un alert(message[i]) ou alert(message[i][0]) donne quoi ?

  3. #3
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    tu ne peux pas faire un escape ou encodeUricomponent ?
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 19
    Par d�faut
    Alors d�j�, pour tester, j'ai cr�� un fichier de 256 octets allant de 00 � FF pour tester toutes les valeurs que je pourrais rencontrer.

    Faire un alert(message[i]) m'affiche dans la boite de dialogue les caract�res ascii correspondant au octet. Dans le cas de mon caract�re qui pose probl�me j'ai un blanc.
    Avec un alert(message[i][0]) me marque : "Erreur d'execution Microsoft JScript : 'message[...].0' � la valeur Null ou n'est pas un objet."


    Je ne peux pas faire un encodeURIComponent, parce qu'il attend une chaine.

  5. #5
    Expert confirm�
    Avatar de le_chomeur
    Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2006
    Messages
    3 653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 3 653
    Par d�faut
    j'ai beau chercher , je ne trouve rien

    il s'emble que sous ie un String.fromCharCode('0x0D') effectue un retour a la ligne ( vaut un \n ) mais pas r�ussis a le tester via un == '\n' :-/

  6. #6
    Membre chevronn�
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par d�faut
    Essayes de forcer le LineSeparator :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    adCRLF  -1      Default. Carriage return line feed
    adLF 	10 	Line feed only
    adCR 	13 	Carriage return only
    Mais il y a un truc que je trouve curieux :
    Tu dis �tre en transaction binaire et tu souhaites dans le m�me temps 'intercepter un caract�re'. Je dis curieux car 0x0D en biniare c'est 0x0D qu'on affichera '0x0D' et pas '\n'. C'est peut-�tre ta m�thode de v�rification qui ne convient pas.
    Un fichier binaire qu'on affiche en mode text donne toujours des r�sultats incoh�rents (au sens ASCII).

  7. #7
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut
    Bonjour,

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var b = '\r\n'; alert(b == '\u000D\u000A');
    Ce code renvoie bien true.
    • \u000D correspond au \n
    • \u000A correspond au \r
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

  8. #8
    Expert confirm�
    Avatar de le_chomeur
    Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2006
    Messages
    3 653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 3 653
    Par d�faut
    Yes Arnaud , en sp�cifiant le format via \u mais la il nous dit recevoir un charcode de type 0x0D ou alors j'ai rat� un truc

  9. #9
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 19
    Par d�faut
    Bonjour je reviens vers vous parce que j'ai toujours un probl�me avec le type array of byte.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var objADOStream  = new ActiveXObject("ADODB.Stream");
    objADOStream.Type = adTypeBinary;
    objADOStream.Open();
    objADOStream.LoadFromFile(filepath);
     
    for (i = 0; i < Math.ceil(objADOStream.Size / readByteSize); i++) {
    	var strContent = objADOStream.Read(readByteSize);
    	octetStream[i] = strContent;
    }
     
    objADOStream.Close();
    Jusqu'ici, j'obtiens un tableau octetStream qui est un "objet".
    L'objet contient des "Array of Byte".
    Chaque "Array of Byte" contient 512 valeur de type "Number".

    Une fois le fichier lu, je souhaite l'envoyer par AJAX en utilisant :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    xmlhttp = new XMLHttpRequest();
    xmlhttp.open ("POST", url, true);
    ...
    xmlhttp.send (octetStream[index]);
    Jusqu'� pr�sent, pas de probl�me sur Internet Explorer 6. Je re�ois bien mon tableau de donn�e binaire.
    Par contre sous Internet Explorer 8, j'obtiens le message suivant : "Argument non valide".

    J'ai d�j� tent� de convertir octetStream avec des fonctions toString() ou join() mais je rencontre � chaque fois une erreur comme quoi l'objet est invalide ou n'est pas un tableau.

    Auriez-vous des id�es ?
    Merci.

Discussions similaires

  1. Limite sup�rieure � Array de Bytes �
    Par DarkVader dans le forum VB 6 et ant�rieur
    R�ponses: 11
    Dernier message: 10/08/2007, 12h04
  2. Caster en array of Byte
    Par the big ben 5 dans le forum Delphi
    R�ponses: 3
    Dernier message: 14/11/2006, 15h00
  3. R�ponses: 5
    Dernier message: 18/11/2005, 22h11
  4. [Array][String]byte[]
    Par beb-mbs dans le forum Entr�e/Sortie
    R�ponses: 12
    Dernier message: 25/08/2005, 06h16
  5. [Type] alternative a "array of byte"
    Par Clorish dans le forum Langage
    R�ponses: 2
    Dernier message: 12/07/2005, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo