如何使用php写文件的响应

时间:2012-04-18 13:22:17

标签: php

我希望使用PHP编写将命中url命名为锚标记的href属性的响应。我怎么能这样做?

这是我想要发生的事情的一个例子

mylink.com/getdoc?name=documentA

返回一个字符串作为回复:

mylink.com/document2012-03-15.pdf

我需要编写这个响应(使用PHP进入href属性,如下所示:

<a href="mylink.com/document2012-03-15.pdf"> Open Document A </a>

(所以上面将是我页面的最终来源。

3 个答案:

答案 0 :(得分:2)

我认为有几种方法可以做你想要的。并非所有这些都能按照您的要求完全正常工作,但最终结果应该是相同的。

解决方案一

我的第一个可能的解决方案已由@shanethehat发布。您可以使用file_get_contents通过HTTP调用PHP脚本并获取响应。

解决方案二

@YourCommonSense在帖子的评论中提出了另一种可能的解决方案。您可以简单地include生成HTML文件的PHP脚本中的getdoc脚本,如下所示:

$_GET["name"] = "documentA";
echo "<a href=\"". include("getdoc.php") ."\"> Open Document A </a>";

解决方案三

或者您可以更改getdoc脚本的工作方式。您可以使用更像这样的脚本:

header("Content-type:application/pdf");
header("Content-Disposition:attachment; filename=\"{$_GET["name"]}\"");
readfile($_GET["name"]);

你保持这样的链接:<a href="mylink.com/getdoc.php?name=documentA"> Open Document A </a>。调用getdoc.php时,它将获取指定的文件并开始下载文件。

注意:您应该使用此方法进行一些输入清理(删除斜杠,确保文件以.pdf结尾等)以确保有人不会尝试获取文件不允许得到。



这就是我现在想出来的全部内容。可能有一种更聪明的方法,但希望其中一种解决方案能够为您完成。我会首先尝试解决方案2或3,如果它们不适合你,那么请使用解决方案1。

答案 1 :(得分:0)

<?php
    //get output from URL
    $myfile = file_get_contents('http://mylink.com/getdoc?name=documentA');
?>
<a href="<?php echo $myfile; ?>">Open Document A</a>

答案 2 :(得分:0)

  

如何使用php编写对文件的响应

Noway。
PHP不处理HTTP请求 您必须设置Web服务器才能进行重写 mod_rewrite标签下有100500个问题,您可以轻松找到解决方案。

请注意,您可能希望将您的网址重写为/getdoc.php?name=document2012-03-15.pdf,而不是您在问题中提到的网址