Datei-Download mit header() in PHP erzwingen
Um Benutzern das Herunterladen von Dateien von Ihrem Server zu ermöglichen, können Sie header() verwenden Funktion. Wenn Sie jedoch auf Probleme mit vorhandenen Beispielen stoßen, bietet dieser Artikel eine Lösung.
Der Code, den Sie versucht haben, enthielt nicht die folgenden wichtigen Header:
- Content-Type, der die angibt Dateityp (z. B. Bild/PNG)
- Inhaltsdisposition, die angibt, dass die Datei heruntergeladen und nicht im angezeigt werden soll Browser
- Inhaltslänge, die die Dateigröße angibt
Hier ist ein korrigierter Codeausschnitt, der funktionieren sollte:
$size = filesize("Image.png");
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="Image.png"');
header('Content-Length: ' . $size);
readfile("Image.png");
Nach dem Login kopieren
Schritte zur Fehlerbehebung:
- Stellen Sie sicher, dass der Dateipfad und die Datei korrekt sind existiert.
- Stellen Sie sicher, dass der Webserver die Berechtigung hat, auf die Datei zuzugreifen.
- Überprüfen Sie, ob alle erforderlichen Header vorhanden und korrekt sind.
- Versuchen Sie, alle Browsererweiterungen oder Plugins zu deaktivieren, die dies tun kann Downloads beeinträchtigen.
- Löschen Sie den Browser-Cache und die Cookies.
- Testen Sie den Code in mehreren Browsern, um dies auszuschließen Browserspezifische Probleme.
Zusätzliche Überlegungen:
- Für Nicht-Bilddateien sollte der Inhaltstyp entsprechend festgelegt werden (z. B. Anwendung /octet-stream für generische Binärdateien).
- Wenn Sie möchten, dass die Datei inline im Browser angezeigt wird, anstatt heruntergeladen zu werden, ersetzen Sie den Anhang durch „inline“. im Content-Disposition-Header.
- Sie können verhindern, dass die Datei zwischengespeichert wird, indem Sie die folgenden Header hinzufügen:
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonWie kann ich Dateidownloads in PHP mithilfe der Funktion „header()' erzwingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!