php
  • curl
  • download
  • 2011-10-13 3 views 0 likes 
    0

    파일 출력에 문제가 있습니다. 파일 크기가 4kb 정도인데 실제로 작습니다. "400 - 잘못된 요청"이라고 말했습니다.다운로드 관리자에서 파일을 꼬아 넣으십시오.

    출처 : 정확한 크기는 28.2mb입니다. 내가 그 앞으로 소스 링크 ... 그럼 어떻게 쿠키 PHP에서 다운로드 할 : 그것은 더 큰 파일, 다른 방법을 처리하지 못할 경우

    $url = 'http://mozilla.isu.net.sa/firefox/releases/7.0.1/mac/en-US/Firefox%207.0.1.dmg'; 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 360); 
    curl_setopt($curl, CURLOPT_COOKIEJAR, 'temp/cookie.txt'); 
    curl_setopt($curl, CURLOPT_COOKIEFILE, 'temp/cookie.txt'); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($curl, CURLOPT_HEADER, true); 
    curl_setopt($curl, CURLOPT_MAXREDIRS, 10); 
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0'); 
    
    $curl_out = curl_exec($curl); 
    
    curl_close($curl); 
    
    $filename = explode('/', $url); 
    $filename = $filename[count($filename)-1]; 
    
    header('Content-Transfer-Encoding: binary'); 
    header('Content-Disposition: attachment; filename="'.$filename.'"'); 
    
    print($curl_out); 
    

    ?

    +0

    curl_out을 vardumping하고 파일 검색시 오류를 찾으십시오. – jancha

    +0

    뜻은 var_dump ($ curl_out)입니까? – user453089

    +0

    @jancha 'echo var_dump ($ curl_out);'시도했습니다. 출력 :' 문자열 (349) " 400 - 잘못된 요청

    400 - 나쁜 요청하기

    " " – user453089

    답변

    0

    내가 무엇을 하려는지는 확실치 않지만 파일을 다운로드 한 후 다시 다운로드하도록 사용자에게 제안하므로이 링크에 대한 요청마다 다시 다운로드해야합니다. 너무 많은 오버 헤드가 있습니다.

    <a href="http://mozilla.isu.net.sa/firefox/releases/7.0.1/mac/en-US/Firefox%207.0.1.dmg">Click here to download</a> 
    
    +0

    그 .. 나는 단지 쿠키와 함께 컬을 원한다. .. – user453089

    0

    은 브라우저를 사용하여 파일을 다운로드 관찰, 복사

    (헤더를보고) 데이터 (파이어 폭스 탬퍼 사용) 모든 헤더와 쿠키를 복제 : 여기

    는 간단한 해결책이다 그리고 파일을 다운로드하기 위해, 나는 당신이 이미 한 것과 함께 이것을 시도 할 것을 제안 할 것입니다.

    $url = 'http://www.example.com/a-large-file.zip'; 
    $path = '/path/to/a-large-file.zip'; 
    
    $fp = fopen($path, 'w'); 
    
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_FILE, $fp); 
    
    $data = curl_exec($ch); 
    
    curl_close($ch); 
    fclose($fp); 
    

    그 외에도 귀하의 링크 및 다운로드를 직접 시도 했으므로 위의 코드로 충분합니다.

    관련 문제