2017-07-20 1 views
0

Je voudrais montrer un fichier flash dans le navigateur. Le retour d'une image à partir d'une action fonctionne (je peux voir l'image dans le navigateur). Mais quand j'essaie de répondre avec le fichier flash, le navigateur essaie de le télécharger.WebApi - Comment répondre avec un fichier flash et afficher dans le navigateur

Voici mon action:

[HttpGet] 
    [GET("file")] 
    public HttpResponseMessage FlashFile() 
    { 
     string filePath = HttpContext.Current.Server.MapPath(@"~/flashfile.swf"); 
     HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); 
     var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read); 
     result.Content = new StreamContent(stream); 
     result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-shockwave-flash"); 
     return result; 
    } 
+0

Le navigateur ne sait pas comment rendre l'objet. Vous aurez besoin de points de terminaison pour cela. Celui ci-dessus reste tel quel, mais vous en avez besoin d'un autre qui renvoie HTML avec un balisage d'objet pointant vers le point de terminaison du fichier flash, tout comme vous le feriez normalement sur une page – Nkosi

Répondre

1

j'ai réussi à le faire fonctionner.

Tout ce que vous devez faire est d'avoir cette ligne dans votre config Web sous <handlers>:

<add name="FlashExtension" path="foobar/*.swf" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 

Je changé [GET("file")] à [GET("foobar/{path}.swf")]

Et utilisé cette URL dans mon fichier HTML comme ceci:

<object width="550" height="400"> 
<param name="movie" value="http://localhost:50000/foobar/flashfile.swf"> 
<embed src="http://localhost:50000/foobar/flashfile.swf" width="550" height="400"></embed> 
</object> 

Ceci affiche ma vidéo flash dans le navigateur en utilisant WebApi.