2

我目前正在创建一个 PHP 网站,允许管理员上传各种文档(pdf、doc、docx、xls),然后可以在以后下载。这些只能由管理员在登录后访问。到目前为止,我一直将文件存储在 Web 根目录之上,然后使用 PHP 通过 PHP 脚本访问和提供文件,从而防止直接访问文件. 这确实有效,但似乎从来都不是一种理想的方法,因为它依赖于通过 PHP 为文件下载设置正确的标题,这并不总是在所有浏览器上给出正确的结果。如果他们知道文件的位置,我真的看不出有任何其他方法可以阻止文件被公开访问。

您通常会使用什么过程来在不应公开访问的 Web 服务器上存储和提供文件?

4

1 回答 1

1

示例 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;
?>
于 2012-07-12T11:40:02.640 回答