ASP MVC在远程主机和连接的用户之间打开实时流



这个想法很简单,我正在创建一个服务,用户可以把一个文件的直接链接放在另一个网站上,我的程序将打开一个流到远程服务器,并开始以字节读取文件,然后将每个读取的字节返回给用户。

的例子:Internet下载管理器将访问我的页面,然后我的代码将获取远程文件并以字节为单位读取它,并将每个字节返回给Internet下载管理器以下载文件。

这是我的代码

    public void Index()
    {
        using (WebClient wcDownload = new WebClient())
        {
            try
            {
                // Create a request to the file we are downloading
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://FILE-IS-NOT-ON-MY-SERVER.com/file.zip");
                // Set default authentication for retrieving the file
                webRequest.Credentials = CredentialCache.DefaultCredentials;
                // Retrieve the response from the server
                HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
                // Ask the server for the file size and store it
                Int64 fileSize = webResponse.ContentLength;
                // Open the URL for download 
                Stream strResponse = wcDownload.OpenRead("http://FILE-IS-NOT-ON-MY-SERVER.com/file.zip");
                // It will store the current number of bytes we retrieved from the server
                int bytesSize = 0;
                // A buffer for storing and writing the data retrieved from the server
                byte[] downBuffer = new byte[500000000];

                // Loop through the buffer until the buffer is empty
                while ((bytesSize = strResponse.Read(downBuffer, 0, downBuffer.Length)) > 0)
                {
                    // i want to return each byte to the user for example Internet Download Manager
                }

                // When the above code has ended, close the streams
                strResponse.Close();
            }
            catch (Exception)
            {
            }
        }
    }

我知道这很乱,但我真的不知道如何将每个字节返回给用户

简而言之,您希望从请求的响应中获得一个流,然后将该流分配给您的响应流(或写入您的响应流)。

我认为这个问题有一个很好的答案。

我认为这个链接http://support.microsoft.com/kb/812406可以帮助你很多!你所需要做的就是改变你的下载打开的文件

相关内容

  • 没有找到相关文章

最新更新