我想向经过身份验证和授权的用户提供一些机密文件。 PHP部分运行良好,目前PHP脚本输出具有适当内容类型的文件内容。但是,有些文件非常大,因此,我希望让HTTP守护程序执行服务过程,如果用户可以获取文件,则首先“问”PHP。我该怎么做?
答案 0 :(得分:2)
对于lighttpd:http://redmine.lighttpd.net/wiki/1/X-LIGHTTPD-send-file
对于apache aditional mod是必需的:https://tn123.org/mod_xsendfile/
用法如下:
$status = authorization();
if($status){
$file = '/tmp/bigfile.dat';
header("X-Sendfile: $file");
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'.basename($file).'"');
}
如果使用Apache,请确保在Apache配置中也打开XSendFile。否则,您将提供空文件。例如:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
XSendFile on
AllowOverride All
Order allow,deny
allow from all
</Directory>