Was sind die praktischen Methoden und Vorsichtsmaßnahmen, um komprimierte Dateien über die Fassthru -Funktion an den Browser zu senden?
gitbox
2025-09-12
<?php
// Der Artikel beginnt
Echo " Was sind die praktischen Methoden und Vorsichtsmaßnahmen, um komprimierte Dateien über die Fassthru -Funktion an den Browser zu senden?
" Echo " In der PHP -Entwicklung ist häufig komprimierte Dateien auf dem Server (z. B. ZIP, GZ usw.) direkt an den Browser zum Herunterladen von Benutzern zu senden. Funktionen sind eine effiziente Wahl. Sie können Dateiinhalte aus Dateizeigern und direkt an den Browser ausgeben, ohne die gesamte Datei in den Speicher zu laden. In diesem Artikel werden einige praktische Methoden eingebracht und Vorstellungen.
" Echo " 1. Grundnutzung von Fassthru
" ; Echo Die grundlegende Syntax von "fpassthru ist wie folgt:
" ; Echo "
int fpassthru (Ressource \ $ Handle)
" ; Echo " Die Datei wird bis zum Ende der Datei bis zum Ende der Datei gelesen und die Daten direkt an den Browser ausgegeben, wobei die Anzahl der Ausgaben der Bytes zurückgegeben wird.
" Echo " 2. Schritte zum Senden von komprimierten Dateien an den Browser
" ; Echo " "
; Echo " Legen Sie den richtigen HTTP -Header fest: Stellen Sie sicher, dass der Browser weiß, dass es sich um eine Datei -Download -Anfrage handelt. " Echo " Öffnen Sie die Datei: Verwenden Sie Fopen , um die komprimierte Datei zu öffnen, die Sie senden müssen. " ; Echo " Verwenden Sie Fassthru, um den Dateiinhalt auszugeben: Dateiinhalt direkt in den Browser übertragen. " ; Echo " Schließen Sie den Dateizeiger: Befreie die Ressource. " ; Echo "" ; Echo " Beispielcode:
" ; Echo "
\ $ file = 'example.zip';
if (file_exists (\ $ file)) {
Header ('Inhaltsbeschreibung: Dateiübertragung');
Header ('Inhaltstyp: Anwendung/ZIP');
Header ('Inhaltsdisposition: Anhang; Dateiname = \ "'. BasisName (\ $ Datei). '\"');
Header ('Content-Transfer-Coding: Binary');
Header ('Inhaltslänge:'. FileSize (\ $ Datei));
\ $ fp = fopen (\ $ file, 'rb');
if (\ $ fp) {
fpassthru (\ $ fp);
fcLose (\ $ fp);
Ausfahrt;
}
}
" ; Echo " Drei, praktische Methoden
" ; Echo " ; Echo " Verwenden Sie ReadFile oder Fassthru, um zu vermeiden, dass große Dateien gleichzeitig in Speicher geladen werden. " ; Echo " In Kombination mit OB_Clean () und Flush (), um den Ausgangspuffer zu reinigen, um die korrekte Dateiübertragung zu gewährleisten. " ; Echo " Informieren Sie die Browserdateigröße im Voraus über die Inhaltslänge, um die Download-Erfahrung zu verbessern. " ; Echo " Können große Dateien in Stücken gelesen und ausgegeben werden und verwenden set_time_limit (0) , um eine Zeitüberschreitung zu verhindern. " ; Echo "" ; Echo " Iv. Dinge zu beachten
" ; Echo " ; Echo " Stellen Sie sicher, dass es keine Ausgabe gibt, einschließlich Leerzeichen und HTML, bevor Sie die Datei senden, andernfalls wird der HTTP -Header unterbrochen. " ; Echo " Richtiger MIME -Typ, z. B. ZIP verwendet Anwendung/ZIP , verwendet GZ Anwendung/GZIP . " ; Echo " Serverberechtigungen müssen PHP ermöglichen, die Zieldatei zu lesen. " ; Echo " Beim Herunterladen großer Dateien berücksichtigen Sie die Einschränkungen der Bandbreite und Zeitüberschreitungen. " Echo "" ; Echo " Fünf, Zusammenfassung
" ; Echo " Die Verwendung von fassthru kann komprimierte Dateien auf dem Server effizient an den Browser senden, um eine übermäßige Speicherverwendung zu vermeiden. Während der Verwendung müssen Sie auf Probleme wie HTTP -Header -Einstellungen, Ausgabebufferverarbeitung und Dateiberechtigungen achten. Das Mastering dieser Fähigkeiten kann die Datei -Download -Funktion stabiler und effizienter machen.
" // Ende des Artikels
?>