Response.WriteFile可能带有URL吗?

时间:2010-02-03 18:23:58

标签: c# asp.net response.write

我希望能够做到这一点:

Response.WriteFile ("http://domain/filepath/file.mpg")

但是,我收到了这个错误:

Invalid path for MapPath 'http://domain/filepath/file.mpg' 
A virtual path is expected.

WriteFile方法似乎不适用于网址。有没有其他方法可以将URL的内容写入我的页面?

感谢。

3 个答案:

答案 0 :(得分:3)

如果您需要代码以这种方式工作,那么您必须首先将其动态下载到您的服务器上:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://domain/filepath/file.mpg");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream file = response.GetResponseStream();

从那时起,您将文件的内容作为流,并且您必须读取/写入响应的字节。

我会提到,这不一定是最佳的 - 你将会消耗你的带宽,因为每个文件将使用远远超过必要的资源。

如果可能,请将文件移至您的服务器,或重新考虑您要执行的操作。

答案 1 :(得分:1)

可能的解决方案是简单地使用:

Response.Redirect("http://domain/filepath/file.mpg")

但是,我不确定这是否是你真正想要做的事情。

答案 2 :(得分:0)

基本上你有几个选择。您可以将文件下载到服务器并使用Response.WriteFile进行投放,也可以重定向到实际位置。如果该文件已在您的服务器上,您只需提供Response.WriteFile的文件系统路径而不是网址,或使用虚拟网址,方法是删除http://domain