如何从c#WebApi中的其他资源流式传输数据

时间:2015-08-09 05:18:42

标签: c# asp.net-mvc asp.net-web-api2 audio-streaming

我正在开发一个MVC网络应用程序,用于传输来自许多资源的数据 我的问题是,当想要从流资源获取数据(音乐文件)然后将其流式传输到我的网页时,我不知道如何不完全下载然后将其流式传输到我的网页。
这是我的webapi代码:

[HttpGet]
public HttpResponseMessage Downlaod(int Data)
{
    WebClient myWebClient = new WebClient();

    Uri u =new Uri("https://api.soundcloud.com/tracks/" + Data + "/stream?client_id=*******************");

    byte[] myDataBuffer = myWebClient.DownloadData(u);
    MemoryStream st = new MemoryStream(myDataBuffer);
    /*heres when i download data and convert it to memory stream*/
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);

    result.Headers.AcceptRanges.Add("bytes");
    result.StatusCode = HttpStatusCode.OK;
    result.Content = new StreamContent(st);
    result.Content.Headers.ContentLength = st.Length;
    result.Content.Headers.ContentType =
                new MediaTypeHeaderValue("application/octet-stream");
    return result;
}

我希望在从资源接收字节时立即流式传输。

注意:我没有询问如何将数据流式传输到客户端,关于从服务器到服务器的流式传输。 我希望从另一台服务器获取文件并将其流式传输到我的客户端,而无需在开始流式传输之前下载完整内容。

note2:我也不想一次性下载完整内容,因为完整内容非常大,我想从我的内容中获取一个字节,然后将该字节发送给客户端而不下载完整内容。 我认为我是以错误的方式做到这一点,如果任何人都可以引入一个可以从目的地到客户端代理字节的应用程序,它就不可能使用MVC应用程序。我想要这个的主要原因是将音乐文件从我的内容服务器代理到javascript音乐播放器,而不是公开主文件。

0 个答案:

没有答案