2012-01-18 12 views
5

Estoy tratando de transmitir un archivo utilizando la etiqueta HTML5 de audio. He puesto la acción del Controlador para devolver un FileStream y lo he conectado al src para el audio. Sin embargo, el contenido no se carga en la etiqueta de audio y no se reproduce cuando presiono el botón de reproducción predeterminado. Sé que el controlador está funcionando cuando accedo al src directamente. Sin embargo, no funciona en la etiqueta de audio HTML5.Transmitir archivo MP3 MVC3

¿Alguien me puede decir lo que me estoy perdiendo?

Respuesta

6

No debe devolver un FileStream, debe devolver un FileStreamResult o una FilePathResult de su acción del controlador, así:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult MyAudio() 
    { 
     var file = Server.MapPath("~/app_data/test.mp3"); 
     return File(file, "audio/mp3"); 
    } 
} 

y la ~/Views/Home/Index.cshtml vista:

@{ 
    Layout = null; 
} 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Sound Sample</title> 
</head> 
<body> 
    <article class="audio"> 
     <header> 
      <h2>Some audio</h2> 
     </header> 

     <audio controls> 
      <source src="@Url.Action("myaudio")" type="audio/mp3" /> 
      <p>Your browser does not support HTML 5 audio element</p> 
     </audio> 
    </article> 
</body> 
</html> 
+0

no presentaría regresar simplemente haga que el navegador descargue el archivo completo y luego comience a jugarlo? ¿En lugar de transmitirlo? –