agorlov
Новичок
не получается cURL'ом сохранять файлик с удаленного сервера. вот такого вида ссылка:
http://somesite.ru/export/csv.php?p=5089&type=nal
в ответ сервер должен отдать csv файлик. Если это скопировать в адресную строку браузера - то все работает "на ура", а если в php скрипт, то вроде все отрабатывается как и положено, а файлик не передается. Вот этот скрипт:
вот заголовки, которые шлет chrome если ссылку просто в адресную сроку скопировать:
Может кто подскажет, что я не так делаю?
http://somesite.ru/export/csv.php?p=5089&type=nal
в ответ сервер должен отдать csv файлик. Если это скопировать в адресную строку браузера - то все работает "на ура", а если в php скрипт, то вроде все отрабатывается как и положено, а файлик не передается. Вот этот скрипт:
PHP:
$url = 'http://somesite.ru/export/csv.php?p=5089&type=nal';
$path = '/var/www/tmp/p_5089_K-Don S03_.csv';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31');
curl_setopt($ch, CURLOPT_HTTPHEADER, array (
"Connection: keep-alive",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding: gzip,deflate,sdch",
"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4",
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3"
));
$data = curl_exec($ch);
print($data);
echo'<br><hr>';
curl_close($ch);
file_put_contents($path, $data);
а вот это я скопипастил и curl заставляю отсылать:GET /export/csv.php?p=5089&type=nal HTTP/1.1
Host: somesite.ru
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Вот еще заголовки ответов сервера... Оригинал (из браузера):[request_header] =>
GET /export/csv.php?p=5089&type=nal HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31
Host: somesite.ru
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
И то что cURL возвращает:HTTP/1.1 200 OK
Server: nginx/0.8.53
Date: Tue, 30 Apr 2013 09:49:14 GMT
Content-Type: text/csv
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.3.18
P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
X-Powered-CMS: Bitrix Site Manager (5aec0109e...fc48d63cd3f)
Set-Cookie: PHPSESSID=bf38d77c6f1f781c0f0d6b5bc574a3d6; path=/; domain=somesite.ru
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-disposition: attachment;filename=file_export_nal_5089.csv
вроде бы все хорошо, но данные не передаются и в итоге получаю файлик нулевой длинныHTTP/1.1 200 OK
Server: nginx/0.8.53
Date: Tue, 30 Apr 2013 09:48:20 GMT
Content-Type: text/csv
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.3.18
P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
X-Powered-CMS: Bitrix Site Manager (5aec0109e...fc48d63cd3f)
Set-Cookie: PHPSESSID=53c684f0ce81c0a75fa43326ae3bd920; path=/; domain=somesite.ru
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-disposition: attachment;filename=file_export_nal_5089.csv
