@seenotevil

Как сделать одновременную закачку и отдачу файла в браузер для закачки?

Есть сервер на php, по удаленному url получаем файл по частям и отдаем одновременно этот файл по частям в браузер для скачивания. То есть сервер закачивает одновременно файл себе на и одновременно этот файл качает пользователь.
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
PavelK
@PavelK
для браузера отдавать прямой юрл не проще? А у себя в фоне спокойненько закачать.
вообще можно начать с того, что
$file=  fopen("http://127.0.0.1/testfile.txt", "r");
открывает удалённый юрл, так же открываем локальный файл на запись $savefile = fopen("testfile.txt", "w");
затем задаём заголовки, что бы браузер понял, что это файл
header('Content-Type: application/octet-stream');
     header('Content-Disposition: filename='.$fileName);

затем спокойненько читаем файл, при этом отдавая и клиенту
while(!feof($file)) //-- пока не конец файла
    {
        $data = fread($file); //-- читаем 
        print $data;  //-- отдаём в браузер
       fwrite($savefile,  $data); //-- записываем прочитанное в локальный файл
 }
//-- закрываем файлы
fclose($file);
fclose($savefile);


Это просто быстрый набросок, на работоспособность не проверял, так же нужно скорее всего дополнить необходимые заголовки.
Хотя может я вообще не прав и тогда стоит смотреть в сторону curl

Так же стоит учесть - время выполнения скрипта может выйти за лимит сервера и он убьётся так и не докачав.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы