Eine Datei in PHP mit cURL runterladen

Vor das Problem gestellt, wie man in PHP eine Datei von einem anderen Server herunterladen kann, gibt es mehrere Lösungen. In diesem Tutorial möchte ich auf die Möglichkeit eingehen, dies mit cURL zu lösen. Dafür muss dieses Modul auf dem Webserver natürlich für PHP aktiviert sein. Das könnt ihr mithilfe der phpinfo() Funktion sehr einfach rausfinden.

Schritt 1: cURL initialisieren

Bevor wir die Datei herunterladen können müssen wir cURL zuerst initialisieren. Hierfür bietet uns PHP einfach die Funktion curl_init() an. Optional kann man dieser Funktion die URL für den Request mitgeben, kann diese aber auch später noch festlegen. Als Rückgabe bekommt man ein Handle (oder ein false im Fehlerfall).

In diesem Beispiel gebe ich direkt die URL zu der Datei an, die ich herunterladen möchte. Möchte man diese URL erst später festlegen gibt es dafür auch eine Option die gesetzt werden kann. Doch zu den Optionen kommen wir nun in Schritt 2.

 

Schritt 2: Optionen festlegen

Nach dem Erstellen des Handles folgen meist ein oder mehrere Aufrufe der Funktion curl_setopt(). Diese Funktion wird zum Festlegen der Optionen für das übergebene Handle benutzt. Es steht dabei eine Fülle an Optionen zur Verfügung, eine Auflistung findet ihr auf php.net. Für unsere Zwecke benötigen wir diesmal nur zwei Optionen:

CURLOPT_FILE legt fest, in welche Datei auf unserem Server das Ergebnis des Aufrufs gespeichert werden soll. Hierfür öffnen wir die Datei mithilfe von fopen() und speichern das entstandene Filehandle in der Option.

CURLOPT_TIMEOUT ist die Option, die angibt, wie lange der Request höchstens dauern darf. Dies kann bei großen Dateien wichtig sein. Die Angabe erfolgt in Sekunden. Der folgende Aufruf legt die Timeoutzeit zum Beispiel auf eine Stunde fest.

 

Schritt 3: Die Datei runterladen

Nachdem unser Request mit den richtigen Optionen eingestellt wurde müssen wir nun den Request noch starten. Dies funktioniert sehr simpel über die curl_exec() Funktion. Als Parameter übergeben wir einfach das Handle, welches vorher erstellt wurde.

Solange der Server erreichbar ist und die Datei existiert, wird die Datei nun auf unseren Server heruntergeladen. Am Ende muss die Datei natürlich wieder mit fclose() geschlossen werden. Wird dies nicht gemacht kann es später zu Problemen bekommen, wenn man zum Beispiel versucht, die Datei wieder zu löschen.

 

Hier nochmal der komplette Code, der benötigt wird, um eine Datei mithilfe von cURL in PHP herunterzuladen. Dies ist natürlich nur eine stark vereinfachte Version, Dinge wie Sicherheit, Errorhandling und Ähnliches wurden hier nicht berücksichtigt und sollten in einem richtigen Script definitiv eingebaut werden.

 

Es gibt neben dieser auch andere Möglichkeiten, um Dateien in PHP herunterzuladen. Auf diese werde ich aber in anderen Tutorials näher eingehen.

2 Kommentare zu “Eine Datei in PHP mit cURL runterladen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*