Ich möchte, dass eine Datei heruntergeladen wird, wenn der Benutzer eine Webseite mit PHP besucht. Ich denke, es hat etwas damit zu tun file_get_contents
, bin mir aber nicht sicher, wie ich es ausführen soll.
$url = "http://example.com/go.exe";
Nach dem Herunterladen wird eine Datei header(location)
damit nicht auf eine andere Seite umgeleitet. Es hört einfach auf.
Antworten:
Lesen Sie die Dokumente zur integrierten Readfile der PHP-Funktion
Stellen Sie außerdem sicher, dass Sie den richtigen Inhaltstyp basierend auf Ihrer Datei application / zip, application / pdf usw. hinzufügen - jedoch nur, wenn Sie den Dialog zum Speichern unter nicht auslösen möchten.
quelle
Wenn die Datei nicht mit dem Browser geöffnet werden kann, können Sie einfach den
Location
Header verwenden:quelle
$file
(der den http-Teil enthält) sein, sondern ein gültiger Dateiname.ist richtig
oder besser für exe- Dateityp
quelle
Zeigen Sie Ihre Datei zuerst an und setzen Sie ihren Wert in url.
index.php
download.php
quelle
Wenn Sie eine Datei mit einer Größe herunterladen müssen, die größer als das zulässige Speicherlimit (
memory_limit
INI-Einstellung) ist und denPHP Fatal error: Allowed memory size of 5242880 bytes exhausted
Fehler verursachen würde , können Sie Folgendes tun:quelle
ob_flush()
kann der Fehler auftreten: ob_flush (): Puffer konnte nicht geleert werden. Kein Puffer zum Spülen . wickeln Sie es mitif (ob_get_level() > 0) {ob_flush();}
(Referenz stackoverflow.com/a/9182133/128761 )Eine Änderung der oben akzeptierten Antwort, die auch den MIME-Typ zur Laufzeit erkennt:
quelle
Der folgende Code ist eine korrekte Methode zum Implementieren eines Download-Dienstes in PHP, wie im folgenden Tutorial erläutert
quelle
file_name
undfilePath
. Nicht sehr gute Codierungspraxis. Besonders ohne Erklärung. Das Verknüpfen mit einem externen Tutorial ist nicht hilfreich.Versuche dies:
quelle
http://php.net/manual/en/function.readfile.php
Das ist alles was du brauchst. "Monkey.gif" ändert Ihren Dateinamen. Wenn Sie von einem anderen Server herunterladen müssen, wechseln Sie zu "monkey.gif" zu " http://www.exsample.com/go.exe ".
quelle
Sie können auch Downloads streamen, wodurch deutlich weniger Ressourcen verbraucht werden. Beispiel:
Im obigen Beispiel lade ich eine test.zip herunter (die eigentlich die Android Studio-Zip auf meinem lokalen Computer war). php: // output ist ein schreibgeschützter Stream (wird normalerweise von Echo oder Print verwendet). Danach müssen Sie nur noch die erforderlichen Header festlegen und stream_copy_to_stream (Quelle, Ziel) aufrufen. Die Methode stream_copy_to_stream () fungiert als Pipe, die die Eingabe aus dem Quell-Stream (Lesestream) an den Ziel-Stream (Schreib-Stream) weiterleitet. Außerdem wird vermieden, dass der zulässige Speicher erschöpft ist, sodass Sie tatsächlich größere Dateien herunterladen können als dein PHP
memory_limit
.quelle
Die Antworten über mir funktionieren. Ich möchte jedoch eine Methode zur Durchführung mit GET beisteuern
auf Ihrer HTML / PHP-Seite
und
download.php
enthältDies sollte für alle Dateitypen funktionieren. Dies wird nicht mit POST getestet, könnte aber funktionieren.
quelle