2009-06-17 20 views
10

Jak zapisać plik za pomocą curl i PHP?Zapisywanie pliku za pomocą curl i PHP

+2

są na pewno trzeba zwijać? czy file_get_contents ("http://whatever.com") nie wystarczy? –

+1

Jestem pewien, że ponad 50% z 14 000 odsłon nie stwierdziło, że 'file_get_contents' było wystarczające – redolent

Odpowiedz

8

Można użyć:

<?php 
// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

// grab URL and pass it to the browser 
$out = curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 


$fp = fopen('data.txt', 'w'); 
fwrite($fp, $out); 
fclose($fp); 

?> 

Patrz: http://jp2.php.net/manual/en/function.curl-exec.php i http://us3.php.net/manual/en/function.fwrite.php

+2

Spowoduje to wykonanie zadania dla małych plików, ale wczyta cały plik do pamięci przed zapisaniem, więc prawdopodobnie uderzysz fatalnie" brakujące pamięci, jeśli plik jest większy niż limit pamięci PHP. Odpowiedź Haima Evgi poprawnie przesyła plik na dysk, co pozwala uniknąć tego problemu. –

+0

I 'curl_exec' prosto do' file_put_contents() '. Przynajmniej zapisuje 3 linie kodu. –

22

chciałeś coś takiego?

function get_file($file, $local_path, $newfilename) 
{ 
    $err_msg = ''; 
    echo "<br>Attempting message download for $file<br>"; 
    $out = fopen($local_path.$newfilename,"wb"); 
    if ($out == FALSE){ 
     print "File not opened<br>"; 
     exit; 
    } 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_FILE, $out); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_URL, $file); 

    curl_exec($ch); 
    echo "<br>Error is : ".curl_error ($ch); 

    curl_close($ch); 
    //fclose($handle); 

}//end function 

funkcjonalność: jego funkcja i przyjmuje trzy parametry

get_file($file, $local_path, $newfilename) 

$file: to nazwa obiektu, który ma zostać pobrana

$local_path: jest lokalna ścieżka do katalogu, aby zapisać obiekt

$newfilename: jest nową nazwą pliku w systemie lokalnym

-3

Myślę, że curl ma opcję -o zapisywanie danych wyjściowych do pliku zamiast standardowego.

Po -o musisz podać nazwę pliku wyjściowego.

przykład:

 

curl -o path_to_the_file url 
+1

To jest dla * wersji curl wiersza polecenia *, ale nie dla biblioteki curl PHP. –

Powiązane problemy