La conversion de l'image pour tableau binaire (blob) avec HTML5
Je suis en train d'utiliser le "FileReader' et 'Fichier' Api prises en charge dans HTML5 dans Chrome et Firefox pour convertir une image en un tableau binaire, mais il ne semble pas fonctionner correctement sur Chrome. J'ai juste une simple page HTML avec un fichier le type d'entrée:
<input id="image_upload" type="file" />
Et d'ici, je suis en utilisant jQuery pour saisir le contenu de l'image, puis à l'aide de l'API: File.getAsBinary()
pour le convertir en un tableau binaire. Cela fonctionne parfaitement sur Firefox mais pas sur Chrome:
$('#image_upload').change(function() {
var fileList = this.files;
var file = fileList[0];
var data = file.getAsBinary();
//do something with binary
});
Lorsque cette méthode s'exécute sur Chrome j'ai une erreur dans la console en disant:
uncaught TypeError: Object #<File> has no method 'getAsBinary'
Je suis en utilisant le plus up-to-date de la version de Google Chrome, qui au jour d'aujourd'hui (2011-05-31) est la version: 11.0.696.71 et selon les sources de cette méthode est censé être pris en charge avec la version la plus récente de google Chrome.
Qui n'a pas l'air de fonctionner donc j'ai essayé d'utiliser le FileReader
API et vous n'avez pas de chance. J'ai essayé de faire cela en vain:
$('#image_upload').change(function() {
var fileList = this.files;
var file = fileList[0];
var r = new FileReader();
r.readAsBinaryString(file);
alert(r.result);
]);
Mais qui ne retourne rien ne ce qui je suppose est parce que readAsBinaryString()
est une méthode void. Je suis à une perte complète de la façon d'obtenir ce travail pour Chrome et Firefox. J'ai cherché partout sur le web à la recherche à d'innombrables exemples en vain. Comment puis-je le faire fonctionner?
OriginalL'auteur Kevin | 2011-06-01
Vous devez vous connecter pour publier un commentaire.
Le FileReader l'API est une API asynchrone, si vous avez besoin de faire quelque chose comme ceci à la place:
OriginalL'auteur Ilmari Heikkinen
Compris que je pouvais aller passer un appel de retour à moi-même, telle que:
Cela fonctionne parfaitement. Je suis en mesure de passer le blob retourné à partir de la fonction onload à moi-même une fois que c'est fini.
OriginalL'auteur Kevin