Выполнить HTTP Get с помощью curl внутри страницы

#file #http #curl

#файл #http #curl

Вопрос:

У меня есть эта ссылка для скачивания

Он загружает zip-файл при нажатии на ссылку или вставке в адресную строку браузера. При вставке в браузер браузер выполняет http GET, и ответ заставляет браузер загрузить файл.

Я хочу выполнить http get из php-скрипта и заставить браузер загрузить файл. Как я могу добиться этого с помощью cURL в php.

Я пробовал приведенный ниже код, но он выводит двоичный ответ в браузере.

 $curl = curl_init();
    // Set some options - we are passing in a useragent too here
    curl_setopt_array($curl, array(
    CURLOPT_URL => 'http://windows.php.net/downloads/pecl/releases/pthreads/3.1.0/php_pthreads-3.1.0-7.0-ts-vc14-x64.zip'
    ));
    // Send the request amp; save response to $resp
    $resp = curl_exec($curl);
    // Close request to clear up some resources
curl_close($curl);
  

Ответ №1:

Единственное, что вы можете попробовать, это просто сбросить это содержимое вместо того, чтобы записывать его с правильными заголовками. Таким образом, ваш скрипт / сервер служит посредником вместо пользователя, как сейчас.

Таким образом:

 $curl = curl_init();
// Set some options - we are passing in a useragent too here
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://windows.php.net/downloads/pecl/releases/pthreads/3.1.0/php_pthreads-3.1.0-7.0-ts-vc14-x64.zip'
));
// Send the request amp; save response to $resp
$resp = curl_exec($curl);
// Close request to clear up some resources
curl_close($curl);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="php_pthreads-3.1.0-7.0-ts-vc14-x64.zip"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . strlen($resp));
exit($resp);