嗨,我在项目中创建一个安全的上传文件夹时遇到了问题。
问题是,我们有一个文件上传,每个人都可以上传文件,但只有网站管理员以后才能查看文件。
是否可以使文件夹不可读,但可以从php页面访问?
服务器是一个linux环境下的
实际上有几种方法可以做到这一点。
-
Apache配置(您可以通过IP安全或HTTP授权来限制对特定目录的访问),请参阅:允许、拒绝和Apache身份验证
-
将文件保存到无法通过网站访问的目录,并通过readfile 编写自己的php目录列表和文件下载
-
将文件上载到只能通过"secret"ftp/sftp访问的目录。
简单的答案是将文件放在web根目录之外的目录中,并构建一个页面来查看需要管理员身份验证才能访问的目录。
如果文件位于web根目录之外,则无法使用/path/to/file.ext
类型的URL直接访问这些文件。
在这种情况下,我会将文件夹定位在文档根目录之外,或者通过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;
}
?>