问题就说明了这一点..我如何让用户从我的网站下载文件,不让他们看看该文件来自哪个链接?我知道可能需要一些像 download.php 这样的东西作为网关,但过去那个阶段,我不知道接下来要编写什么脚本...如果它困扰你写下整个代码,我需要使用的一些函数名称真的很方便!
答案 0 :(得分:10)
找到一种方法来识别要下载的文件(例如,与数据库中某行的ID匹配的GET变量,或者沿着这些行的某些内容)。确定它是有效的,因为您不希望您的用户能够从您的网站下载任何内容。然后,使用header
和Content-Disposition
告诉浏览器应该下载文件,并readfile
输出文件。
例如:
<?php
$id = intval($_GET['id']);
$query = mysql_query('SELECT file_path FROM files WHERE id = ' . $id);
if (($row = mysql_fetch_row($query)) !== false)
{
header('Content-Disposition: attachment; filename=' . basename($row[0]));
readfile($row[0]);
}
exit;
?>
答案 1 :(得分:4)
您无法让某人从网址下载文件而不让他们知道该网址。根据HTTP规范,这是不可能的。下载的任何内容都有一个URL。
但是,您可以拥有仅运行一次的下载URL,或者需要通过POST方法传递某些特定信息。您在GET或POST变量中检查令牌,并在该令牌使用一次后使其无效。
答案 2 :(得分:1)
您可以使用header()
我建议向下滚动并查看第一个示例。它似乎正在做你想要的。
答案 3 :(得分:0)
readfile应该做你想做的事。将实际文件放在Web服务器根目录之外,并在传回文件之前需要一些凭据。