readfile() vs. header()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • readfile() vs. header()

    Hi ihr,

    ich habe ein kleines/großes Problem. Ich wollten einen Downloadmanager schreiben. Also ein Tool, welches mir ermöglicht Dateien zum komfortablen download bereitzustellen.

    Jetzt hatte ich für den Download folgenden Code geschrieben (die Variablen sind ja egal):

    PHP-Code:
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Type: ".finde_content($datei["vch_filename"]));
    header("Content-Disposition: attachment; filename=".$datei["vch_filename"]);
    header("Content-Length: ".$datei["int_size"]);
    header("Content-Transfer-Encoding: binary");
    @
    readfile("downloads/".$datei["vch_alias"]); 
    Das ganze läuft auch soweit perfekt. Ich kann auf dem Server eine Datei 123.XYZ haben, aber der Download meldet mir dann eine Datei namens XYZ.123 (oder anders). Dadurch kann ich beim upload gewährleisten, daß keine Dateien überschrieben werden.

    Jetzt habe ich aber das Problem, daß mein Hoster (ich nenne keine Namen) generell PHP-Scripte nach 90 Sekunden terminiert - dadurch wird dann der Download bei größeren Dateien gnadenlos abgebrochen, weil ja readfile() läuft.

    Okay, dachte ich mir, biste ja clever (dachte ich zumindest) und nimmst den folgenden Befehl statt des oben stehenden Codes:

    PHP-Code:
    header ("Location: downloads/".$datei["vch_alias"]); 
    Tja, nun klappt zwar der Download, aber ich habe keinen Einfluß auf den Dateinamen für den Download mehr. Es wird immer der Name genommen, wie auf dem Server. Das ist aber ungünstig.

    Kennt jemand eine Idee, wie man das mit zusätzlichen Headern (oder anders) auf die gleiche Funktionialität wie oben bringen kann?

    Wäre euch sehr dankbar.

    CU
    MARS_3-142
    Zuletzt geändert von mars_3-142; 14.01.2006, 09:00.

  • #2
    mit einem header hast du keinen einfluß auf den dateinamen (aber das hast du ja auch schon selbst herausgefunden). schau dir evtl. die einstellungen an, an denen du drehen könntest (http://de.php.net/manual/en/function...ime-limit.php, etc.).

    ansonsten - bevor du dir eine verdrehte lösung bastelst (die erfahrungsgemäß weitere probleme mit sich bringt), frag beim hoster an, was sich machen lässt bzw. ziehe zu einem um, der soetwas erlaubt.

    Kommentar

    Lädt...
    X