我目前正在创建一个PHP网站,允许管理员上传各种文档(pdf,doc,docx,xls),然后可以在以后下载。管理员只有在登录后才能访问这些内容。到目前为止,我已经将文件存储在Web根目录上,然后使用PHP通过PHP脚本访问和提供文件,从而阻止直接访问文件。这确实有效,但似乎永远不是一个理想的方法,因为它依赖于通过PHP为文件下载设置正确的标题,这并不总是在所有浏览器上给出正确的结果。我无法真正看到任何其他方式,如果他们知道文件位于何处,也会阻止文件公开访问。
您通常会使用哪个流程来存储和提供不应公开访问的Web服务器上的文件?
答案 0 :(得分:2)
示例PHP:
<?php
if (TRUE === $_SESSION['logged_in']) {
}
$file = '/full/path/to/useruploads/secret.pdf';
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;
?>