2013-09-24 5 views
3

Я пытаюсь получить zip-файл (я не знаю размер и имя раньше) с запросом xml, который возвращает мне zip-файл. Я хочу загрузить его, но иногда скачивать его (16 мб) иногда (2 мб или 4 мб или 1 мб) Я не знаю, почему.Скачать zip PHP

Это мой код:

$ch2=curl_init(); 
curl_setopt($ch2, CURLOPT_URL, $this->URL); 
curl_setopt($ch2, CURLOPT_TIMEOUT, 5040); 
curl_setopt($ch2, CURLOPT_HEADER, 0); 
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch2, CURLOPT_POST, 1); 
curl_setopt($ch2, CURLOPT_POSTFIELDS,$this->XMLRequest); 
curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, 1); 
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch2, CURLOPT_SSLVERSION, 3); 
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, true); 

$xml = curl_exec($ch2); 

curl_close($ch2); 
$file2 = fopen('upload/item.zip','w+'); 
fwrite($file2, $xml); 
fclose($file2); 

Я также попытался:

file_put_contents('upload/item.zip', $xml); 

Может кто-нибудь мне помочь?

+0

Я не вижу curl_exec в коде? это $ xml = curl_exec ($ ch2); – Dexa

+0

Редактировать вопрос у меня отсутствует строка @Dexa –

ответ

9

Пробег: CURLOPT_FILE - download large file?

set_time_limit(0); //prevent timeout 

$ch2=curl_init(); 
$file2 = fopen('upload/item.zip','w+'); 
curl_setopt($ch2, CURLOPT_URL, $this->URL); 

curl_setopt($ch2, CURLOPT_FILE, $file2); //auto write to file 

curl_setopt($ch2, CURLOPT_TIMEOUT, 5040); 
curl_setopt($ch2, CURLOPT_POST, 1); 
curl_setopt($ch2, CURLOPT_POSTFIELDS,$this->XMLRequest); 
# don't use this. please verify your host & peer properly :) 
# curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, 1); 
# curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch2, CURLOPT_SSLVERSION, 3); 
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, true); 

curl_exec($ch2); 

curl_close($ch2); 
fclose($file2); 

EDIT:

Примечания: Как отметил @bansi, вам может понадобиться для проверки файла, размер файла, curl_error и т.д.

+1

Я просто писал тот же ответ, вы избили меня на секунду. Ницца. +1 – Dexa

+0

Также всегда проверяйте, есть ли какие-либо ошибки, прежде чем вы подтвердите, что загруженный файл верен. http://www.php.net/manual/en/function.curl-error.php – bansi

+0

Не уверен, что вам нужно установить 'CURLOPT_TIMEOUT' хм ... и да нужно также проверить файл. –

Смежные вопросы