2014-04-03 43 views
1

我现在有一个包含链接的HTML页面的用户:ASP.NET MVC:检索.mp3文件,并恢复

<a href="javascript:void()" onclick="return getAudioFile('fileLocation');">Listen</a> 

点击“试听”链接调用这个函数:

function getRecordingFile(fileLocation) { 

    }; 

最终应调用该控制器的方法:

[HttpPost] 
    public ActionResult GetAudioFile(string fileLocation) 
    { 
     return null; 
    } 

我已经掏空了的功能和方法b因为我已经尝试了几个不同的事情来完成这个任务:我需要从本地位置访问音频文件,并允许用户听取它/点击Listen链接下载它。

什么似乎是最好的方式去做这件事?

+0

您可以渲染一个

+0

在网页上渲染音频控件会很好,但经过一番挖掘,看起来我必须对IIS进行一些更改。我想避免这种情况。如果“下载”文件是唯一的选择,那么我会好的。 –

回答

1

下面是最终的结果:

[HttpGet] 
    public ActionResult GetAudioFile(string fileLocation) 
    { 
     var bytes = new byte[0]; 


     using (var fs = new FileStream(fileLocation, FileMode.Open, FileAccess.Read) 
     { 
      var br = new BinaryReader(fs); 
      long numBytes = new FileInfo(fileLocation).Length; 
      buff = br.ReadBytes((int)numBytes); 
     } 

     return File(buff, "audio/mpeg", "callrecording.mp3"); 
    } 

在页面的链接是:

<a href="/Controller/[email protected]">Listen</a> 

荣誉给我的老板的帮助。

0

也许使用FileResult?

[HttpPost] 
public FileResult GetAudioFile(string fileLocation) 
{ 
    using(FileStream fs = new FileStream(fileLocation)){ 

     return File(fs.ToArray(), "audio/mpeg"); 
    } 

} 
+0

我做了类似的事情。所有代码都会执行,但网页上没有任何反应。我希望提示下载文件。 –