0

在使用 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 我做错了什么?还有其他下载文件的方法吗?我正在尝试强制浏览器下载文件(并更改文件名)而不是在浏览器中预览

PS对不起我的英语;)

4

2 回答 2

1

这是一种不正确的做法。文件内容将是:

http://otherserver/file.m4v

你在这里设置:

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

您需要使用的是HttpWebRequest 类

于 2013-01-24T13:39:39.087 回答
0

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

当浏览器看到一个带有 URL 的文件时,它不会说“哦,我应该下载那个 URL 上的任何东西”,这并不神奇。

此外,在谷歌上搜索了一下并查看了关于这个主题的几个PHP 讨论,我认为没有一种方法可以做你想做的事,而无需将文件从远程 URL 流式传输到你的服务器,然后从你的服务器到客户端。

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

于 2013-01-24T13:44:26.983 回答