2012-06-18 2 views
4

Je suivais tutoriel HTML5ROCKSretour FileReader.readAsArrayBuffer est nul

http://www.html5rocks.com/en/tutorials/file/dndfiles/

et je suis en train d'utiliser readAsArrayBuffer au lieu de readAsBinaryString à découper un exemple de fichier (parce que je veux lire en-tête gif pour trouver la résolution de fichiers). Mais je suis bloqué parce que evt.target.result (en utilisant readAsBinaryString c'est une chaîne)

des idées?

EDIT: Code

reader.onloadend = function(evt) 

{ 

    if (evt.target.readyState == FileReader.DONE) { // DONE == 2 
    document.getElementById('byte_content').textContent = evt.target.result; 
    console.log(evt.target.result.byteLenght) 
    document.getElementById('byte_range').textContent = 
     ['Read bytes: ', start + 1, ' - ', stop + 1, 
     ' of ', file.size, ' byte file'].join(''); 
    } 
}; 

if (file.webkitSlice) { 
    var blob = file.webkitSlice(start, stop + 1); 
} else if (file.mozSlice) { 
    var blob = file.mozSlice(start, stop + 1); 
} 
reader.readAsArrayBuffer(blob); 
} 

donc dans Firefox 13 je reçois à l'écran: [objet ArrayBuffer]

et journal de la console: non défini

tout en chrome 18 je reçois sur la console: TypeError non intercepté: Impossible de lire la propriété 'byteLenght' de null

+1

Où sont pétantes que vous coincé? [this] (http://www.html5rocks.com/en/tutorials/file/dndfiles/#toc-slicing-files) est le code de base. Maintenant, quelles sont vos modifications, qu'attendez-vous et qu'est-ce qui ne va pas? –

+0

@RobW J'ai changé reader.readAsBinaryString (blob); à eader.readAsArrayBuffer (blob) et je m'attendais à obtenir ArrayBuffer mais je reçois null. – wonglik

+1

Impossible de reproduire dans Chromium 18: http://jsfiddle.net/XDbnJ/ Je vois '[object arrayBuffer]'. Inclure * votre * code dans la question, y compris les détails sur votre navigateur et vos attentes. –

Répondre

5

Une erreur de frappe est survenue dans:

console.log(evt.target.result.byteLenght) 

byteLenght devrait être byteLength

+0

Je l'ai déjà mentionné dans les commentaires. Cependant, ceci n'est pas la cause du problème: cela consisterait simplement à enregistrer 'undefined', et à ne pas lancer' TypeError'. –

+2

oui c'était ça. Stupide que je suis. – wonglik