通过PHP的身份验证和授权方案使用Apache / lighttpd提供下载?

时间:2010-11-28 13:19:15

标签: php apache file-upload lighttpd

我想向经过身份验证和授权的用户提供一些机密文件。 PHP部分运行良好,目前PHP脚本输出具有适当内容类型的文件内容。但是,有些文件非常大,因此,我希望让HTTP守护程序执行服务过程,如果用户可以获取文件,则首先“问”PHP。我该怎么做?

1 个答案:

答案 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>