下载zip-PHP

下载zip-PHP,php,curl,Php,Curl,我正在尝试获取一个zip文件(我以前不知道大小和名称),其中包含一个请求xml,该请求xml将返回一个zip文件。我想下载它,但有时下载全部(16mb左右),有时不下载(2mb或4MB或1mb),我不知道为什么 这是我的代码: $ch2=curl_init(); curl_setopt($ch2, CURLOPT_URL, $this->URL); curl_setopt($ch2, CURLOPT_TIMEOUT, 5040); curl_setopt($ch2, CURLOPT_HEA

我正在尝试获取一个zip文件(我以前不知道大小和名称),其中包含一个请求xml,该请求xml将返回一个zip文件。我想下载它,但有时下载全部(16mb左右),有时不下载(2mb或4MB或1mb),我不知道为什么

这是我的代码:

$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);
有人能帮我吗?

试试看

编辑:


注意:@bansi指出,您可能需要验证文件、文件大小、
curl\u error
等。

我在您的代码中没有看到curl\u exec?是$xml=curl\u exec($ch2);编辑问题我漏了一行@DexaI刚刚写了同样的答案,你赢了我一秒钟。很好+1在确认下载的文件是否正确之前,请始终检查是否存在任何错误。不确定是否需要设置
CURLOPT\u超时
hmm。。。是的,您还需要验证文件。可能是服务器没有用正确的信息响应您?您的
XMLRequest
中有什么内容?没有,这是一个正确的请求。这是一个xml请求标准,我已经与其他系统检查了请求是否正常,是否有效,只是没有很好地保存文件。。
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);