Réponse binaire Ajax
Salut, je me demandais si il n'y a de toute façon à flux binaire réponse en AJAX? Ce serait une solution ultime, sinon j'en aurais besoin pour réaliser l'image binaire d'un fichier puis de le transmettre ce fichier à l'utilisateur avec une URL différente.
new Ajax.Request('/viewImage?id=123', {
//request returns a binary image inputstream
onSuccess: function(transport) {
//text example
//alert(transport.responseText)
//QUESTION: is there a streaming binary response?
$('imgElem').src = transport.responseBinary;
},
onFailure: function(transport) {
//handle failure
}
});
source d'informationauteur dev101
Vous devez vous connecter pour publier un commentaire.
Il pourrait ne pas être possible de flux des données binaires, mais vous pouvez utiliser Ajax pour récupérer des données binaires.
Ceci est possible en utilisant une des deux méthodes: Javascript Tableaux Typés ou un XMLHttpResponse overrideMimeType hack. Lire un bon article sur MDN – ces exemples sont pris à partir de là: L'envoi et la Réception de Données Binaires
Le Tableau Typé méthode ressemble à ceci:
Tableaux typés ne sont pas pris en charge dans IE < 10, Firefox < 4, Chrome < 7, Safari < 5.1 et Opéra < 11.6, et support mobile est fragile, mais l'amélioration de.
La deuxième méthode utilise une XMLHttpRequest méthode appelée overrideMimeType pour permettre les données binaires d'être passé à travers non modifiée.
Vous obtenez une unparsed chaîne binaire, sur lequel vous pouvez utiliser
var byte = filestream.charCodeAt(x) & 0xff;
pour récupérer un spécifique octet.C'est une extension de Tom Ashworth de réponse (ce qui a contribué à me mettre sur la bonne voie avec le problème que j'ai été confronté). Cela vous permet d'obtenir exactement le filestream (FileStreamResult si vous utilisez asp.net mvc) et la placer à l'img src, ce qui est cool.
L'idée de base est que les données sont retournées non altérée, il est placé dans une goutte, puis une url est créée à cet objet dans la mémoire. Voir ici et ici. Note navigateurs pris en charge.
Ce que vous pouvez faire, si vous essayez de générer une image à la volée, est de tout faire:
ensuite, vous pouvez envoyer les données avec le type mime.
Si vous voulez vraiment envoyer une image, alors vous voudrez peut-être chercher à la balise canvas HTML5, mais je ne suis pas certain de la façon dont excanvas serait de travailler avec cette, pour être multi-plateforme.
Vous pouvez écrire sur la toile, mais il serait plus efficace d'utiliser la balise img.
Vous pouvez envoyer la réponse que vous souhaitez, de l'être en texte brut, HTML, une image... que ce soit! C'est à vous, comment le gérer lorsque vous la recevez.
Mais... vous ne pouvez pas affecter une image binaire de la
<IMG>
attribut src. Vous feriez mieux de simplement retourner l'URL de l'image et affectez-le au lieu - eh bien, pour être honnête, il y a quelques encodages pour intégrer des images à la SRC, mais ils ne sont pas de la croix-navigateur de sorte que vous aurez envie de rester loin d'eux.