我有许多文件存储在服务器上,但不存在于public_html目录中。这个想法是,登录的用户可以下载文件,使用$ _SESSION变量来检查他们是否已登录,但如果其他人使用他们的计算机,他们无法在浏览器历史记录中看到直接文件路径,即使他们这样做它位于公共html目录之外,因此无法访问。
我知道我需要一个脚本来执行此操作,但我无法知道如何在任何地方执行此操作,如果有人可以告诉我如何执行此操作,我将不胜感激。
答案 0 :(得分:10)
您可以使用readfile
将输出作为相关文件。 EG:
$file = '/absolute/path/to/file.ext';
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;
}
答案 1 :(得分:0)
如果这是在public_html文件夹之外,那么从文件中创建一个php脚本到file_get_contents。
这是我使用的脚本的一部分
if ($type == "1" && $method == "f"){
header('Content-type: application/pdf');
} else {
header('Content-type: image/jpeg');
}
$fp = fopen($uploaded_dir . $result['theimage'], "r");
while ($data = fread($fp, 1024)){
echo $data;
}
fclose($fp);