@stamdyscias

Как осуществить скачивание файла?

Есть скрипт, он выводит файл, который храниться на сервере, а как сделать так,чтоб он не показывал нам его, а скачивал
<?php
  if( $curl = curl_init() ) {
    curl_setopt($curl, CURLOPT_URL, 'http://www/email.php');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    $out = curl_exec($curl);
    echo $out;
    curl_close($curl);
  }
?>
  • Вопрос задан
  • 1227 просмотров
Пригласить эксперта
Ответы на вопрос 3
creativeworm
@creativeworm
Источник на Хабре:
function file_force_download($file) {
  if (file_exists($file)) {
    // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
    // если этого не сделать файл будет читаться в память полностью!
    if (ob_get_level()) {
      ob_end_clean();
    }
    // заставляем браузер показать окно сохранения файла
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    // читаем файл и отправляем его пользователю
    if ($fd = fopen($file, 'rb')) {
      while (!feof($fd)) {
        print fread($fd, 1024);
      }
      fclose($fd);
    }
    exit;
  }
}
Ответ написан
@entermix
Нужно отправить браузеру правильные заголовки.

Уже был аналогичный вопрос: Как отобразить полученный поток с PDF по curl?
Ответ написан
mahoho
@mahoho
Full stack certified PHP developer.
$fileDescriptor = fopen('/path/to/file', 'w+');
curl_setopt($curl, CURLOPT_FILE, $fileDescriptor);
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
28 апр. 2024, в 20:09
9000 руб./за проект
28 апр. 2024, в 19:54
2000 руб./за проект
28 апр. 2024, в 19:54
5000 руб./за проект