0

我用 php 创建了一个文件下载系统。我是这样创作的

phpfiledownload.php
--------------------

<?php 
$file = 'testing.php'; 
if (file_exists($file)) {
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename='.basename($file));
  header('Content-Transfer-Encoding: binary');
  header('Expires: 0');
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
  header('Content-Length: ' . filesize($file));
  ob_clean();
  flush();
  readfile($file);
  exit; 
} ?>

我还创建testing.php了如下文件

testing.php
------------
<?php echo "Hello World"; ?>

当我phpfiledownload.php从本地主机运行时,我得到了testing.php文件。

但是当我更改testing.phphttp://www.anotherdomain.com/example.phpin时,phpfiledownload.php我无法下载http://www.anotherdomain.com/example.php.

所以,我怎么http://www.anotherdomain.com/example.php能通过我的 phpfiledownload.php

4

3 回答 3

0

您的问题不是很清楚:您的意思是下载php文件还是Web服务器处理的结果?

在您的代码中,“testing.php”是一个本地文件,而“ http://www.example.com/example.php ”是一个 URL。

在第一种情况下,您的本地 Web 服务器获取本地文件并使用适当的标头返回它。

在第二种情况下,您仅获得站点“ http://www.example.com ”的 Web 服务器生成的 html 输出

于 2013-09-05T14:46:59.777 回答
0

小费

如果启用了fopen 包装器,则 URL 可以用作此函数的文件名。有关如何指定文件名的更多详细信息,请参阅fopen() 。请参阅支持的协议和包装器以获取有关各种包装器具有哪些功能的信息的链接、有关其使用的说明以及有关它们可能提供的任何预定义变量的信息。

取自 PHP 手册,here

于 2013-09-05T14:47:55.790 回答
0

要下载http://www.example.com/example.php,您可以使用下面的代码

file_put_contents("example.php", fopen("http://www.example.com/example.php", 'r'));

注意:如果 example.php 包含 php 代码,它将在网络服务器上运行并将 HTML 输出返回给您。所以你的文件是 example.php 的输出而不是源代码。

于 2013-09-05T14:52:12.870 回答