php头文件路径

php头文件路径,php,Php,我想问一个解决方案,如何让PHP在不重定向和不读取文件源的情况下下载文件,如本例所示: if(1 == 1) { header("Content-Type: application/xml"); header("Content-Transfer-Encoding: binary"); header("Cache-Control: private",false); header("Content-Disposition: attachment; filename=

我想问一个解决方案,如何让PHP在不重定向和不读取文件源的情况下下载文件,如本例所示:

if(1 == 1)
{
    header("Content-Type: application/xml");
    header("Content-Transfer-Encoding: binary");
    header("Cache-Control: private",false); 
    header("Content-Disposition: attachment; filename=example.xml;" );    
    $file = file_get_contents("file.ext");
    echo file;
}
我需要下载的解决方案,而不需要
文件获取内容
使下载像
mod\u rewrite


谢谢

您可以让PHP直接将文件发送到输出,而不是使用

编辑

相反,我建议一次读取并传递数据块,这样性能会更好,因为它不必在开始输出之前读取整个文件

if ($f = fopen($file, 'rb')) {
    while(!feof($f) and (connection_status()==0)) {
        print(fread($f, 1024*8));
        flush();
    }   
    fclose($f);
}   

您可以让PHP直接将文件发送到输出,而不是使用

编辑

相反,我建议一次读取并传递数据块,这样性能会更好,因为它不必在开始输出之前读取整个文件

if ($f = fopen($file, 'rb')) {
    while(!feof($f) and (connection_status()==0)) {
        print(fread($f, 1024*8));
        flush();
    }   
    fclose($f);
}   

您可以将Apache与X发送文件模块一起使用

mod_xsendfile是一个处理X-SENDFILE的小型Apache2模块 由原始输出处理程序注册的头

如果它遇到这样的标题,它将放弃所有 输出并发送由该头指定的文件,而不是使用Apache 内部包括所有优化,如缓存头和 sendfile或mmap(如果已配置)

它对于处理php、perl或任何其他语言的脚本输出非常有用 cgi


您可以将Apache与X发送文件模块一起使用

mod_xsendfile是一个处理X-SENDFILE的小型Apache2模块 由原始输出处理程序注册的头

如果它遇到这样的标题,它将放弃所有 输出并发送由该头指定的文件,而不是使用Apache 内部包括所有优化,如缓存头和 sendfile或mmap(如果已配置)

它对于处理php、perl或任何其他语言的脚本输出非常有用 cgi


PHP下载文件,无需重定向,无需读取文件源impossible@zerkms,不,不是:mod_xsendfile@Petah:这很有趣,谢谢
PHP下载文件,无需重定向和读取文件源impossible@zerkms,不,不是:mod_xsendfile@Petah:那很有趣,谢谢您好先生,谢谢您的回答我的问题请如果我使用这个模块用户可以知道我需要的直接链接吗hidden@user533178,不,您从未将链接发送到客户端。你用PHP发送一个头文件,然后Apache自动获取并重定向下载。您好,先生,谢谢您回答我的问题。如果我使用这个模块,用户可以知道我需要的直接链接吗hidden@user533178,不,您从未将链接发送到客户端。你用PHP发送一个头文件,然后Apache自动获取并重定向下载必需?您可以在这里阅读:)这并没有描述它的需求。为什么
标题(“Pragma:public”)必需?您可以在此处阅读:),它没有描述对它的要求。