在php中隐藏源地址的同时下载大型文件

在php中隐藏源地址的同时下载大型文件,php,downloadfile,Php,Downloadfile,我需要对用户隐藏外部文件链接。 用户单击“下载”按钮,该按钮指向我的功能,在该功能中,文件被下载并返回到客户端,问题是我不知道下载文件的扩展名是什么 因此,我通过“get_file_contents”下载该文件,并从文件头读取原始文件名,但它不适用于大型文件 我最初使用readfile,但也有一些文件被压缩的情况 现行代码 $sUrl = ... external url; $sFileName = ''; $context = stream_context_create

我需要对用户隐藏外部文件链接。 用户单击“下载”按钮,该按钮指向我的功能,在该功能中,文件被下载并返回到客户端,问题是我不知道下载文件的扩展名是什么

因此,我通过“get_file_contents”下载该文件,并从文件头读取原始文件名,但它不适用于大型文件

我最初使用readfile,但也有一些文件被压缩的情况

现行代码

    $sUrl = ... external url;
    $sFileName = '';
    $context = stream_context_create();
    $mResult = file_get_contents($sUrl, false, $context);
    foreach($http_response_header as $header) {
        if (strpos($header, 'Location:') !== false) {
            $sFileName = basename(trim(str_replace('Location:', '', $header)));
            break;
        }
    }
    header("Content-Description: File Transfer");
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename={$sFileName}");
    echo $mResult;
    exit();
如何隐藏下载文件的外部链接,同时将非常大的文件返回给客户端