2013-02-28 2 views
1

웹 사이트에서 큰 csv 파일을 다운로드하려고합니다. file_get_contents와 file_put_contents를 사용하라는 제안을 보았습니다.하지만 파일 크기 때문에 cURL과 파일 핸들 옵션을 사용하기로 선택했기 때문에 데이터는 PHP 메모리에 직접 저장됩니다.URL에서 파일을 다운로드하고 파일이 완전히 다운로드되었는지 확인하십시오.

그러나 전체 파일이 항상 다운로드되지 않는 이상한 오류가있는 것 같고 응답 헤더를 사용하지 않고 전체 파일이 다운로드되었는지 확인하는 방법이 확실하지 않습니다. cURL의 파일 핸들 옵션을 사용할 때 액세스 할 수 있습니다.

이것은 잠시 후에 파일을 가져 오는 데 사용하는 것입니다.

$ch = curl_init('*FILE_TO_GET*'); 
    $fp = fopen('*WHERE_TO_FILE*', 'wb'); 
    curl_setopt($ch, CURLOPT_FILE, $fp); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_exec($ch); 
    curl_close($ch); 
    fclose($fp); 

파일 크기는 현재 약 3.8MB이지만 훨씬 더 커질 수 있습니다.

+0

http://www.google.com/search?q=php+curl+response+header –

+0

'curl_getinfo ($ ch)'를 시도하고 모든 매개 변수가 올바른지 확인하십시오. – SilentAssassin

+0

@ KarolyHorvath 고맙지 만 이미 Google을 사용하는 방법을 알고 있습니다. 내가 찾을 수있는 모든 예제는 파일을 메모리에로드하여 헤더를 가져와야합니다. – James

답변

1

다운로드 할 파일의 크기를 알지 못하면 다운로드 여부를 결정할 수 없습니다.

이와 같이 파일의 헤더 정보를 가져와야합니다. 파일 헤더는 일반적으로 크기가 작으며 대용량 파일을 다운로드하는 경우 상당한 노력이 필요합니다. 헤더는 정보의 다른 비트와 함께 파일 크기를 갖습니다.

이전에 헤더를 가져 오지 않으 셨으므로 파일 크기를 결정하는이 멋진 기능을 시도하십시오 (Php Remote File Size without downloading file).

여기 예제에서는 머리글을 다운로드하고 크기 정보를 추출하는 방법을 자세히 설명합니다. 그런 다음이 값을 다운로드 한 파일 크기 및 비올로와 간단하게 비교할 수 있습니다.

관련 문제