2009-03-27 4 views
3

La situation est que vous devez travailler avec une API d'image et vous devez faire une demande POST pour obtenir un flux d'image que vous souhaitez afficher dans le reste de votre page Web.Pouvez-vous utiliser javascript pour afficher un flux d'images?

Je peux faire une requête ajax à ce service sur le chargement de la page en utilisant jQuery, mais je viens de recevoir un flux binaire retourné. Y at-il de toute façon que JavaScript peut prendre cette chaîne binaire et afficher le type de contenu qui est dans l'en-tête?

Répondre

2

Je crois que vous devrez faire en sorte que le flux soit diffusé lorsqu'une URL est référencée par une opération HTTP GET - alors que JavaScript a défini l'attribut src de l'image sur cette URL. J'ai vu cela fait avec ASP.NET, où un gestionnaire .ashx est utilisé pour diffuser l'image. On référence alors http://site.com/images/imagehandler.ashx?parameters.

+0

Je n'ai aucun contrôle sur la façon dont le flux est livré. Je ne peux pas organiser cela avec un GetOperation. Sauf, peut-être que je pourrais écrire un proxy qui serait à peu près un passage à travers ... – taelor

+0

Un tel proxy fonctionnerait très bien. Utilisez simplement WebRequest dans un gestionnaire asynchrone. –

1

Ne pouvez-vous pas définir l'attribut src d'une image sur l'URL que vous utilisez actuellement pour votre communication ajax? Ou devez-vous supprimer d'abord les autres informations de l'appel ajax?

+1

La balise img utilise une requête GET et non une requête POST. donc je ne pense pas que l'attribut img tag src fonctionnerait. – taelor

0

Il suffit d'utiliser le javascript pour créer un élément img avec l'URL qui renvoie l'image comme src:

// jquery 
$(#some-id).append('<img src="/get-image/?foo=bar"/>'); 
+0

La balise img utilise une requête GET et non une requête POST. Je souhaite que c'était si facile. – taelor

1

faire la demande de poste de formulaire avec le ciblage d'un iframe. C'est la seule façon.

+0

yah, je l'ai implémenté en utilisant cette méthode. C'est un hack bâclé, mais ça marche un peu. je vais vous donner un +1, mais cela ne répond pas à la question $) – taelor

3

Je crois que ce que vous cherchez est Data URI Scheme - ce qui vous permet de formater un URI très long qui spécifie les données binaires nécessaires en soi.

+0

Si le flux résultant doit être affiché dans 'le reste de la page', je crains que ce soit beaucoup trop grand pour tenir dans une donnée: URI ... – Martijn

+0

J'ai vu ça, mais je ne sais pas comment convertir le binaire en base64. Connaissez-vous de bons articles de blog? Est-ce que cela fonctionne avec IE6 ou même IE7? – taelor

+0

http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/the-what-why-and-how-of-data-uris-in-web-design/ – tree

Questions connexes