Retourner un Tableau d'Octets à partir d'FileReader()
J'ai besoin d'un peu d'aide de retour à la "octets" variable de cette fonction ci-dessous pour être utilisé comme une entrée dans une autre fonction.
function openfile() {
var input = document.getElementById("files").files;
var fileData = new Blob([input[0]]);
var reader = new FileReader();
reader.readAsArrayBuffer(fileData);
reader.onload = function(){
var arrayBuffer = reader.result
var bytes = new Uint8Array(arrayBuffer);
console.log(bytes);
}
J'aimerais avoir le retour de la fonction ci-dessus et utiliser le tableau d'octets en tant que paramètre d'entrée dans une autre fonction.
- Que diriez -
return bytes;
? Pour l'utiliser en tant que paramètre d'une autre fonction, l'utiliser comme ceci:myfunction(openfile(evt));
- J'obtiens un "undefined" en cas de changement de console.log(octets);" à "retour d'octets;" et en appelant à l'extérieur "de la console.log(openfile());"
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser des promesses à attendre pour le lecteur de fichier à la fin du chargement de votre fichier.
Ici vous pouvez trouver plus d'informations sur les promesses.
Voici un exemple sur la façon dont vous pourriez intégrer une promesse dans votre situation.
JS:
HTML:
Si vous passez par la
onload
fonction de l'événement, vous pouvez le faire fonctionner.Cela corrige de
reader.result
àe.target.result;
.En outre, il y a un problème dans l'utilisation de
fileData
, qui est fixé àBlob[files[0]]
et l'envoi que pourreader.readAsArrayBuffer
. SupprimerfileData
et de l'appeler avecreader.readAsArrayBuffer(input[0]);
, à la place.e.srcElement
à la place. C'est là, si vous utilisez google Chrome. Mais aussi quelque chose qui était sans doute il ne fonctionne pas, l'OP est essentiellement l'aide dereader.readAsArrayBuffer(new Blob([input[0]]));
quand il aurait étéreader.readAsArrayBuffer(document.getElementById("files").files[0]);
, qui n'a pas à l'origine sont résolus, ici, et modifier ce quee
est. Je l'ai ajouté dans un montage.