我们正在使用cURL将文件从我们的某个服务器下载到我们的工作流服务器。我正在使用下面粘贴的简单代码,但我的文件“加倍” - 大小的两倍,长度的两倍。似乎文件已保存,然后再次附加,但我无法弄清楚为什么在世界上正在发生。
下面是我本地计算机上的测试代码,行为完全相同:
$file_name = 'test.mp3';
$copy_to_dir = 'C:/test_files/';
$file_url = 'C:/source_files/test.mp3';
$fp = fopen ($copy_to_dir. '/' . $file_name, 'w');
$ch = curl_init($file_url);
curl_setopt_array($ch, array(
CURLOPT_URL => $file_url,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FILE => $fp,
CURLOPT_TIMEOUT => 50
));
$results = curl_exec($ch);
if(curl_exec($ch) === false)
{
//echo 'Curl error: ' . curl_error($ch);
return false;
}
curl_close($ch);
fclose($fp);
原始文件为9MB,每次复制为18MB
编辑:这是一个教训,你不要在匆忙时复制/粘贴代码,以“节省时间”。第二个curl_exec()应该是curl_errno()或其他错误处理策略 - 即使只是使用fwrite()意味着我会下载所有内容两次,所以你不想在获得解决方法后退出
答案 0 :(得分:0)
您正在调用curl_exec()
两次,因此会将文件下载两次。变化:
if(curl_exec($ch) === false)
为:
if($results === false)