Заставить Curl загружать файл прямо в браузер, а не загружать его в tmp?

Этот код, который я написал, работает и загружает файл в браузер клиента, но с задержкой, потому что сначала он загружает файл в какой-то временный каталог, а затем, когда это делается, просто передает его клиенту.
Я не хочу этого, я хочу, чтобы файл загружался без задержки.

header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Length: '.filesize');

$chdownload = curl_init();

curl_setopt($ch, CURLOPT_URL, $url]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$data = curl_exec($ch);
curl_close($ch);echo $data;

0

Решение

Файл не загружается во временную папку на диске. Задержка, которую вы описываете, вызвана тем, что curl_exec() блокирует выполнение вашего скрипта, так как ему нужно дождаться загрузки всего файла, прежде чем ваш скрипт сможет продолжить работу.

Чтобы получить доступ к данным во время их загрузки, вам нужно использовать потоки с curl (используя CURLOPT_FILE) для более старых версий curl или использования CURLOPT_WRITEFUNCTION с функцией обратного вызова для более новых версий curl. Проверять, выписываться этот ответ для подробного решения.

0

Другие решения

Других решений пока нет …