有一个网址具有下载文件的特定语法 http://www.hddownloader.com/?url=http://www.youtube.com/watch?v=N-HbxNtY1g8&feature=featured&dldtype=128
用户在文本框中输入文件名并按下下载按钮。在click事件中,调用Response.WriteFile,将文件发送到客户端。
现在我想创建另一个带有页面的网站,用户输入文件名并按下载按钮下载该文件。
现在我想利用第一个网址。我不想使用Response.Redirect,因为通过这种方式,用户将会知道我正在使用mydownload.com。
我怎样才能实现这一目标。
一种方法是:当我们从microsoft的网站下载一些东西时,会弹出一个小窗口(没有关闭,最大化和最小化按钮),然后会出现保存对话框。
如何实现这一目标或其他目标?
答案 0 :(得分:5)
您可以先使用WebClient.DownloadFile从服务器上的远程位置下载文件:
using (var client = new WebClient())
{
client.DownloadFile("http://remotedomain.com/somefile.pdf", "somefile.pdf");
Response.WriteFile("somefile.pdf");
}
或者如果您不想将文件临时保存到磁盘,则可以使用DownloadData方法,然后将缓冲区流式传输到响应中。
更新:
第二种方法的例子:
using (var client = new WebClient())
{
var buffer = client.DownloadData("http://remotedomain.com/somefile.pdf");
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment;filename=somefile.pdf");
Response.Clear();
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
}