Nun, dieser scheint ziemlich einfach zu sein, und das ist es auch. Alles, was Sie tun müssen, um eine Datei auf Ihren Server herunterzuladen, ist:
file_put_contents("Tmpfile.zip", file_get_contents("http://someurl/file.zip"));
Es gibt nur ein Problem. Was ist, wenn Sie eine große Datei wie 100 MB haben? Dann geht Ihnen der Speicher aus und Sie können die Datei nicht herunterladen.
Was ich möchte, ist eine Möglichkeit, die Datei beim Herunterladen auf die Festplatte zu schreiben. Auf diese Weise kann ich größere Dateien herunterladen, ohne auf Speicherprobleme zu stoßen.
Antworten:
file_put_contents()
Unterstützt seit PHP 5.1.0 das Schreiben Stück für Stück, indem ein Stream-Handle als$data
Parameter übergeben wird:Aus dem Handbuch:
(Danke Hakre .)
quelle
allow_fopen_url Off
in php.ini festgelegt (gute Idee für die Sicherheit), würde Ihr Skript beschädigt.file_get_contents()
würde auch nicht funktionieren, wenn das der Fall wäre (siehe OP).fopen
. Verhindert nachteilige Auswirkungen auf Bilder und andere nicht reine Textdateien.quelle
Versuchen Sie es mit cURL
Ich bin nicht sicher, aber ich glaube mit der
CURLOPT_FILE
Option, die es schreibt, wenn es die Daten zieht, dh. nicht gepuffert.quelle
$fh = fopen('/path/to/download/the/file/to.zip', 'w');
und schließen Sie mitfclose($fh);
nachcurl_close($ch);
. Und setzenCURLOPT_FILE => $fh
Die Antwort von prodigitalson hat bei mir nicht funktioniert. Ich habe
missing fopen in CURLOPT_FILE
mehr Details .Dies funktionierte für mich, einschließlich lokaler URLs:
quelle
.php
Datei und führen Sie ihn auf dem Zielserver ausDownloader:
quelle
set_time_limit (24 * 60 * 60);
muss in eine Schleife gelegt werden. Es hat zu Beginn des Skripts keine Auswirkung.quelle
Es gibt drei Möglichkeiten:
Beispiele finden Sie hier .
quelle
Verwenden Sie eine einfache Methode in PHP
copy()
Hinweis: Wenn die Zieldatei bereits vorhanden ist, wird sie überschrieben
PHP copy () Funktion
Hinweis: Sie müssen die Berechtigung 777 für den Zielordner festlegen. Verwenden Sie diese Methode, wenn Sie auf Ihren lokalen Computer herunterladen.
Besonderer Hinweis: 777 ist eine Berechtigung in einem Unix-basierten System mit vollständiger Lese- / Schreib- / Ausführungsberechtigung für Eigentümer, Gruppe und alle. Im Allgemeinen erteilen wir diese Berechtigung Assets, die nicht unbedingt benötigt werden, um auf einem Webserver vor der Öffentlichkeit verborgen zu werden. Beispiel: Bilderordner.
quelle
Ich benutze dies, um die Datei herunterzuladen
quelle
Eine PHP 4 & 5 Lösung:
readfile () zeigt selbst beim Senden großer Dateien keine Speicherprobleme an. Mit dieser Funktion kann eine URL als Dateiname verwendet werden, wenn die fopen-Wrapper aktiviert wurden.
http://php.net/manual/en/function.readfile.php
quelle