Wie kann ich eine Datei mit Curl und PHP speichern?
Speichern der Datei mit Curl und PHP
Haim Evgi
wolltest du sowas?
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
Funktionalität: Es ist eine Funktion und akzeptiert drei Parameter
get_file($file, $local_path, $newfilename)
$file
: ist der Dateiname des abzurufenden Objekts
$local_path
: ist der lokale Pfad zu dem Verzeichnis, in dem das Objekt gespeichert wird
$newfilename
: ist der neue Dateiname auf dem lokalen System
Sie können Folgendes verwenden:
<?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);
?>
Sehen: http://jp2.php.net/manual/en/function.curl-exec.php
und http://us3.php.net/manual/en/function.fwrite.php
-
Dies erledigt die Aufgabe für kleine Dateien, aber es lädt die gesamte Datei vor dem Speichern in den Speicher, und daher werden Sie wahrscheinlich schwerwiegende Fehler „nicht genügend Speicher“ bekommen, wenn die Datei größer als das Speicherlimit von PHP ist. Die Antwort von Haim Evgi streamt die Datei korrekt auf die Festplatte, wodurch dieses Problem vermieden wird.
– Simon Osten
31. März 2014 um 4:15 Uhr
-
ich
curl_exec
direkt infile_put_contents()
. Es spart mindestens 3 Zeilen Code.– Pmagunie
24. November 2014 um 1:32 Uhr
Rangalo
Ich denke, curl hat die Option -o, um die Ausgabe in eine Datei anstelle von stdout zu schreiben.
Nach -o müssen Sie den Namen der Ausgabedatei angeben.
Beispiel:
curl -o path_to_the_file url
-
Dies ist für die Befehlszeile Version von curl, aber nicht die PHP-Curl-Bibliothek.
– Simon Osten
31. März 2014 um 4:11 Uhr
bist du sicher, dass du curl brauchst? ist file_get_contents(“was auch immer.com”) nicht genug?
– Jonathan Finland
17. Juni 2009 um 12:12 Uhr
Ich bin mir sicher, dass über 50 % der 14.000 Aufrufe das nicht gefunden haben
file_get_contents
war genug– duftend
13. März 2015 um 21:53 Uhr