cURL下载二进制文件”;加倍”;文件


cURL download binaries "doubles up" file

我们使用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()也意味着我会下载所有内容两次,所以你不想在获得解决方法后就退出

您调用了curl_exec()两次,所以它下载了两次文件。更改:

if(curl_exec($ch) === false)

至:

if($results === false)