这个想法很简单,我正在创建一个服务,用户可以把一个文件的直接链接放在另一个网站上,我的程序将打开一个流到远程服务器,并开始以字节读取文件,然后将每个读取的字节返回给用户。
的例子: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可以帮助你很多!你所需要做的就是改变你的下载打开的文件