1

我想知道是否有任何可用于 asp.net mvc 的开源操作结果代码,我可以在其中传递一个 URL,它会响应内容。

就像有一些内置的 Action 结果一样

  • 文件结果
  • 文件流结果

我想构建一个自定义操作结果,我可以在其中传递一个 URL(基本上是一个 mp3 url),该 URL 将下载到内存中,内容将流式传输到当前执行的响应。

如果服务器和客户端支持,它还应该支持恢复下载。这对我来说是必须的。

public UrlActionResult DownloadUrl(string url)
{
     return new UrlActionResult("http://www.example.com/audiofile.mp3");
}
4

2 回答 2

1

对于基本场景,您可以使用如下内容:

public class DownloadResult : ActionResult
{
    private readonly FileStreamResult _fileStreamResult;

    public DownloadResult(string url, string contentType)
    {
        using (var myWebClient = new WebClient())
        {
            var myStream = myWebClient.OpenRead(url);
            _fileStreamResult = new FileStreamResult(myStream, contentType);
        }
    }

    public override void ExecuteResult(ControllerContext context)
    {
        _fileStreamResult.ExecuteResult(context);
    }
}

但是,如果您想进行简历下载,它会变得更加复杂。这是一篇很棒的文章,其中包含示例代码。

于 2014-02-18T21:53:13.850 回答
0

如果您不需要隐藏网址,只需使用重定向。使用重定向并节省您的服务器带宽:

public ActionResult DownloadUrl(string url)
{
     return new Redirect("http://www.example.com/audiofile.mp3");
}
于 2014-02-18T21:59:17.303 回答