在使用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对我的英语;)
答案 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发出请求时丢弃标头 - 然后在浏览器中显示结果。