So geben Sie eine Datei in PHP zurück

Lesezeit: 3 Minuten

So geben Sie eine Datei in PHP zuruck
barin

Ich habe eine Datei

/file.zip

Ein Benutzer kommt zu sich

/download.php

Ich möchte, dass der Browser des Benutzers mit dem Herunterladen der Datei beginnt. Wie mache ich das? Öffnet readfile die Datei auf dem Server, was unnötig erscheint. Gibt es eine Möglichkeit, die Datei zurückzugeben, ohne sie auf dem Server zu öffnen?

So geben Sie eine Datei in PHP zuruck
Gabriel Spiteri

Ich denke du willst das:

        $attachment_location = $_SERVER["DOCUMENT_ROOT"] . "/file.zip";
        if (file_exists($attachment_location)) {

            header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
            header("Cache-Control: public"); // needed for internet explorer
            header("Content-Type: application/zip");
            header("Content-Transfer-Encoding: Binary");
            header("Content-Length:".filesize($attachment_location));
            header("Content-Disposition: attachment; filename=file.zip");
            readfile($attachment_location);
            die();        
        } else {
            die("Error: File not found.");
        } 

  • FYI: Welches Risiko besteht beim HTTP-Header „Cache-Control: public“?

    Benutzer216084

    10. Dezember 14 um 6:01 Uhr

  • es ist Arbeit. Header für Download mit Leerzeichen im Dateinamen einfach header(“Content-Disposition: attachment; filename=””.file.zip.”””);

    – Sirmagid

    13. Juni 17 um 13:36 Uhr

  • Du hättest es einfach haben können header("Content-Type: application/octet-stream"); damit dies mit allen Dateitypen funktioniert, anstatt nur .zip.

    – Griffin Garman

    19. Januar 20 um 22:25 Uhr


  • Bitte kann jeder unterstützen. Ich habe denselben Code verwendet, aber er öffnet die Datei im Browser, anstatt sie herunterzuladen

    – Ibrahim Tayseer

    10. März 20 um 23:46 Uhr

1643910846 454 So geben Sie eine Datei in PHP zuruck
Dunkler Staub

Wenn die Datei öffentlich zugänglich ist, führen Sie einfach eine einfache Weiterleitung zur URL Ihrer Datei durch.

  • Ich kann nicht abstimmen; aber ich würde. Die Frage ist; wie man eine Datei verfügbar macht, indem man auf ein PHP-Skript zugreift. Ich denke, wir wissen, dass wir direkt auf eine Datei zugreifen können, aber die Verwendung eines PHP-Skripts als Mittelsmann gibt uns die Kontrolle. Ich möchte zum Beispiel bestimmten Benutzern einige Downloads erlauben, und die Dateien könnten sich sogar in einer Datenbank befinden.

    – Mike

    12. September 14 um 17:49 Uhr

  • Ich würde deinen Kommentar ablehnen, wenn ich könnte! 🙂 Das OP verwendet PHP und möchte, dass der Browser eine Datei herunterlädt. Sie können Weiterleitungen mit PHP erstellen – etwas, das dem OP vielleicht nicht aufgefallen ist. Die Antwort von DarkDust passt ins Bild und ist gültig.

    – Ban-Geoengineering

    7. November 14 um 22:31 Uhr

  • Ich habe Sie beide positiv bewertet, weil Sie beide gültige Punkte gemacht haben.

    – Andreas

    4. Dezember 21 um 15:29 Uhr

readfile erledigt den Job OK und leitet den Stream direkt an den Webserver zurück. Es ist nicht die beste Lösung, da zum Zeitpunkt des Sendens der Datei PHP noch ausgeführt wird. Für bessere Ergebnisse benötigen Sie etwas wie X-SendFile, das auf den meisten Webservern unterstützt wird (wenn Sie die richtigen Module installieren).

Im Allgemeinen (wenn Ihnen eine hohe Auslastung wichtig ist) ist es am besten, einen Proxy-Webserver vor Ihren Hauptanwendungsserver zu stellen. Dadurch wird Ihr Anwendungsserver (z. B. Apache) schneller entlastet, und Proxy-Server (Varnish, Squid) sind in der Regel viel besser darin, Bytes an Clients mit hoher Latenz oder Clients zu übertragen, die im Allgemeinen langsam sind.

Wenn die Datei öffentlich ist, können Sie sie einfach als statische Datei direkt vom Webserver (z. B. Apache) bereitstellen und download.php auf die statische URL umleiten. Andernfalls müssen Sie readfile verwenden, um die Datei nach der Authentifizierung des Benutzers an den Browser zu senden (denken Sie an die Content-Dispositon Header).

.

758320cookie-checkSo geben Sie eine Datei in PHP zurück

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy