загрузка больших файлов при сокрытии исходного адреса в php - PullRequest
1 голос
/ 24 апреля 2020

Мне нужно скрыть внешние ссылки на файлы от пользователя. Пользователь нажимает кнопку загрузки, которая ссылается на мою функцию, в которой файл загружается и возвращается к клиенту, проблема в том, что я не знаю, какое расширение загруженного файла

, поэтому я загружаю файл через "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();

как скрыть внешнюю ссылку на загруженный файл и одновременно вернуть очень большие файлы клиенту?

...