curl — Как прочитать возврат файла xls с помощью Content-Disposition: вложение с переполнением стека

Когда я получаю доступ к ссылке, например: https://demo.com/report?transType=xls он вернет XLS для загрузки. Это заголовок ответа:

HTTP/1.1 200 OK
Date: Thu, 16 Mar 2017 19:18:37 GMT
Server: IIS/4.0 (Windows XP)
Content-Disposition: attachment; filename*="utf-8''demo.xls
Vary: Accept-Encoding,User-Agent
Content-Length: 14848
Keep-Alive: timeout=10, max=1000
Connection: Keep-Alive

Тип контента: текст / HTML

Как я могу загрузить этот файл на свой сервер, используя PHP (CURL, Socket …)? Я попробовал CURL, но это не сработало. Сохраненный файл не может прочитать 🙁 Это мой код:

$op = curl_init();
curl_setopt ($op, CURLOPT_URL, 'https://demo.com/report?transType=xls');
curl_setopt ($op, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($op, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($op, CURLOPT_TIMEOUT, 60);
curl_setopt ($op, CURLOPT_POST, 1);
curl_setopt ($op, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($op, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($op, CURLOPT_BINARYTRANSFER, 1);

$response = curl_exec($op);
@file_put_contents('saved.xls', $response);

Пожалуйста, помогите мне 🙁

0

Решение

Чтобы скачать файл с помощью curl в php, вы должны использовать код, который выглядит примерно так:

<?php
//File to save the contents to
$fp = fopen ('theFile.xls', 'w+');
$url = "https://demo.com/report?transType=xls";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
//give curl the file pointer so that it can write to it
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);//get curl response
//done
curl_close($ch);
fclose($fp);
?>
0

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

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