2016-04-29 4 views
0

Ich habe ein voll funktionsfähiges Projekt in PHP. Ich versuche, das Äquivalent zu diesem Projekt in Node.js zu erstellen. Das Projekt beruht auf dem Ziehen von Daten aus AWS und dem Entpacken eines Headers aus diesen Daten. In PHP geschieht dies mit folgenden Schritten:Packen Header aus AWS-Aufruf in Node.js

Ich bin mir nicht sicher, wie ich dieselbe Operation in Node.js ausführen soll. Ich habe folgendes versucht:

aws.getObject(params, function(err, data){ 
    if(err == null){ 
     var objectData = data.Body.toString('utf-8'); 
     var sub = objectData.substring(0, 28); 
     var header = bufferpack.unpack('I*', sub); 
     } 
    }); 

In PHP, die header kommt zurück, als eine Reihe von Zahlen, aber in Knoten es sagt, es null ist. Ich weiß, dass die AWS Anruf seit data arbeitet wie folgt zurückgegeben:

{ 
    AcceptRanges: 'bytes', 
    LastModified: 'Wed, 06 Apr 2016 20:04:02 GMT', 
    ContentLength: '1602862', 
    ETag: '9826l1e5725fbd52l88ge3f5v0c123a4"', 
    ContentType: 'application/octet-stream', 
    Metadata: {}, 
    Body: <Buffer 01 00 00 00 ... > } 

Bin ich Bufferpack falsch verwenden?

Antwort

0

Ja, Bufferpack wird falsch verwendet. Bufferpack akzeptiert einen Puffer, keine Zeichenfolge, also sollten Sie anstelle von subdata.Body übergeben. Außerdem wird die Notation * nicht erkannt. Verwenden Sie stattdessen die Anzahl der gewünschten Bytes, z. B.

var header = bufferpack.unpack('7I', data.Body);