将文件上传到只登录用户的文件夹可以读取php

时间:2012-01-20 13:54:01

标签: php file upload

我在项目中制作安全上传文件夹时遇到问题。

问题是我们有一个文件上传,每个人都应该能够上传文件,但只有站点管理员该站点应该能够以后查看文件。

是否可以使文件夹不可读,但可以从php页面访问?

服务器是linux inviroment

3 个答案:

答案 0 :(得分:1)

对此的简单回答是将文件放在Web根目录之外的目录中,并构建一个页面以查看需要管理员授权才能访问的目录。

如果文件位于您的网络根目录之外,则无法使用/path/to/file.ext类型的网址直接访问这些文件。

答案 1 :(得分:1)

实际上有几种方法可以做到这一点。

  1. Apache配置(您可以通过IP安全或HTTP授权限制对某个目录的访问),请参阅:allow,denyapache authentification

  2. 将文件保存到无法通过网站访问的目录,并通过readfile

  3. 编写您自己的php目录列表和文件下载
  4. 将文件上传到目录,只能通过“秘密”ftp / sftp访问。

答案 2 :(得分:0)

在这种情况下,我会在文档根目录之外找到该文件夹​​,或者通过Apache指令限制它的访问权限。

然后,使用PHP并检查访问凭据,使用readfile()

输出文件

以下是手册中的示例     

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');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>
相关问题