2010-01-27 3 views
1

cURL에 문제가 있습니다. 이미지를 다운로드하고 폴더에 저장합니다. cURL이 생성하는 파일에는 올바른 파일 크기가 있으므로 헤더가 올바르게 읽혀지고 있다고 생각하게 만듭니다. 그러나 브라우저 나 사진보기 응용 프로그램에서 파일을 열면 맨 위에있는 작은 비트 만 실제로 기록 된 것처럼 보입니다. 내 코드 :cURL에서 이미지를 제대로 다운로드하지 못했습니다.

function _vancore_curl_savefile($url) { 
    $url = str_replace("\"", "", $url); 
    $basename = basename($url); 
    $basename = str_replace("%20", "_", $basename); 
    $var = file_directory_path() . "/van/" . $basename; 
    $uvar = "files/van/" . $basename; 
    $handle = fopen($var, "w"); 
    $curl = curl_init($url); 
    curl_setopt($curl, CURLOPT_FILE, $handle); 
    $result = curl_exec($curl); 
    $result2 = $result; 
    curl_close($curl); 
    fclose($handle); 
    return $uvar; 
} 

file_directory_path()은 드루팔 파일 다운로드 디렉토리의 경로를 반환하는 드루팔 기능 (이 기능은 드루팔 모듈의 일부와 다운로드 할 각 파일에 대해 호출됩니다)입니다. 나는 것을 다양한 실험을 통해 확인했다 : fopen() 그것이

를 실행 한 후 curl_exec()true을 반환 올바른 파일
c)를 개방한다)

가) $url 그것이
B해야한다 무엇을 나는 매우 혼란 스러워요 여기에 무슨 일이 일어나고 있는지에 관해서. 누구든지 어떤 생각을 가지고 있습니까?

TIA,
벤지

+0

"맨 위에 작은 비트"란 무엇을 의미합니까? 해당 파일을 볼 수 있습니까? 의심스런 JPEG 파일을 다운로드하는 경우 다운로드가 부분적 일 경우에도 볼 수 있습니다. – Boldewyn

+0

GD 또는 ImageMagic으로 뭔가를해야한다고 생각합니다. http://www.bitrepository.com/download-image.html – Rimian

+1

코드가 그대로 정상적으로 작동합니다. 그림은 브라우저와 이미지 앱 모두에서 올바르게 표시됩니다. – GZipp

답변

2

드루팔 컬 모듈에서 컬 라이브러리 "에뮬레이션"을 사용하지 마십시오. 너? 그것은 항상 작동하지 않습니다. 실제 PHP 컬 라이브러리가 설치되어 있는지 확인하십시오.

+0

와우, 그게 다야! 그렇게 단순한 것이라고는 믿을 수 없습니다. 당신의 도움을 주셔서 감사합니다! – benjy

1

설정 :

curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
+0

여전히 같은 문제입니다. 나는 또한 CURLOPT_FILE이 아닌 플래그를 설정하고 그 결과를 파일에 기록하려고 시도했지만 동일한 문제가 지속되었다. – benjy

1

보십시오이 도움이된다면 : (위에서 말했듯이, CURLOPT_RETURNTRANSFER와 함께)

curl_setopt($curl, CURLOPT_HEADER, 0); 
curl_setopt($curl, CURLOPT_TIMEOUT, 60); 
1

curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);이 누락 될 수 있음

Here은 n 예.

관련 문제