PHP:回收文件内容,如"不同"文件名?

时间:2016-04-05 03:22:30

标签: php echo file-get-contents

在PHP中,我正在读取文件,然后回复它。像:

rss.php

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Allow-Headers: x-requested-with, Content-Type, origin, authorization, accept, client-security-token");
header('Content-Type: application/xml');

echo file_get_contents('../../../news.rss');

但是当我通过浏览器访问此rss.php文件时,它会提供正确的RSS文件内容,但文件名仍然是&#34; rss.php&#34; 。< / p>

我需要将其下载为&#34; news.rss&#34;文件名。

有什么建议吗?

(请让我们忘记为什么我不能直接访问&#34; news.rss&#34;文件。背后有一些重大故事。)谢谢大家。 :)

1 个答案:

答案 0 :(得分:2)

试试这个,我目前在我的其他程序中使用它:

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=news.rss');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize('../../../news.rss');
readfile('../../../news.rss');
exit;

而不是回显内容,我们使用readfile()来读取文件并将其输出到输出缓冲区。

<强>更新

请注意,以上代码仅下载文件(无查看)。如果你真的想首先显示文件的内容,你可以先显示它,然后再显示另一个链接,或者使用一个&#34;下载&#34;文件。

我也有和你一样的程序。我查看/更新了用户可以输入的文件,使用fwrite()保存它,然后我有一个按钮,使用上面的代码下载文件