2013-08-15 10 views
0

우리는 우리 서버 중 하나에서 워크 플로우 서버로 파일을 다운로드하기 위해 cURL을 사용하고 있습니다. 아래에 붙여 넣은 간단한 코드를 사용하고 있지만 파일은 두 배나 크기가 두 배입니다. 파일을 저장 한 다음 다시 추가 한 것처럼 보일 수 있지만 전 세계에서 왜 그런 일이 발생하는지 알 수 없습니다. 다음은 cURL 다운로드 바이너리가 "double up"파일

내 로컬 컴퓨터가 동일한 방식으로 행동에 테스트 코드입니다 :

$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); 

원본 파일이 9메가바이트입니다, 복사 18메가바이트는

EDIT 모든 시간이 당신이 복사하지에 교훈하자/서둘러서 "시간 절약"을 위해 코드 붙여 넣기. 두 번째 curl_exec()는 curl_errno() 또는 다른 오류 처리 전략이어야합니다. fwrite()를 사용하는 것만으로도 모든 것을 두 번 다운로드하므로 해결 방법을 찾으면 종료하지 않을 것입니다.

+0

두 파일 :

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

에 : 변경합니다. 어떤 이유? – DevZer0

+0

아니요. prolly 복사/붙여 넣기. 그냥 파일없이 시도, fwrite를 사용하여 - 예상 결과 – jmadsen

+0

그래서 파일을 제거하고'$ result'를 쓰면 예상 결과가 나옵니까? – DevZer0

답변

0

curl_exec()을 두 번 호출하여 파일을 두 번 다운로드합니다. 당신이 반환 전송을하고있는 이유

if($results === false) 
+0

gar! 나는 그것이 어리 석다는 것을 알았습니다. CURLOPT_FILE과 같은 주요 버그가 없었습니다. – jmadsen