asp.net C#从外部链接下载ashx中的文件

时间:2013-01-24 13:18:44

标签: c# asp.net ashx

在使用ashx下载文件时需要一些帮助

我正在尝试从外部链接下载大文件(大约2-4GB)(文件未存储在网络服务器上)

这是我的代码

context.Response.Clear();
context.Response.ContentType = "video/mp4";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
context.Response.Write("http://otherserver/file.m4v");
context.Response.Flush();
context.Response.Close();

和下载的文件是1kb 我做错了什么? 并是下载文件的其他方式? 我正试图强制浏览器下载文件(并更改文件名)而不是在浏览器中预览

P.Sory对我的英语;)

2 个答案:

答案 0 :(得分:1)

这是一种不正确的方法。文件内容为:

http://otherserver/file.m4v

您在此处设置:

context.Response.Write("http://otherserver/file.m4v");

您需要使用的是HttpWebRequest Class

答案 1 :(得分:0)

您所做的只是向浏览器发送包含文本"http://otherserver/file.m4v"的文件,其中包含一个标题,表明浏览器可以下载而不是显示该文件。

浏览器中没有任何神奇的东西导致它在看到包含URL的文件时说“哦,我应该下载该URL的任何内容”。

此外,谷歌搜索了一下并在这个主题上看了几个PHP discussions,我认为没有办法做你想要的,而不是从远程URL直接传输文件在您的服务器上,然后将其从您的服务器发送到客户端。

您可以尝试添加标头,然后向客户端发送重定向,但我希望客户端在向远程URL发出请求时丢弃标头 - 然后在浏览器中显示结果。