Kevin23: Datei downloaden

Hi Leutz,

Ihr kennt das sicher: Man klickt im Browser auf einen Link, welcher auf eine PHP-Seite (bspw. 'index.php') verweist. Kurze Zeit, nachdem die Seite geladen ist, wird einem eine Datei (bspw. 'inhalt.txt') zum Download angeboten. Der Unterschied zu einem "direkten" Download ist halt der, dass die Datei, welche einem nach dem Aufruf der 'index.php' zum Download angeboten wird, nicht direkt in der URL auftaucht.

Meine Frage ist nun, wie ich per PHP-Skript eine solche Datei automatisch downloaden und speichern kann. Hat jemand von Euch da einen Ansatz bzw. ein Snippet? Ich habe es schon per CURL versucht, allerdings wird mir nichts ausgegeben.

$url = "http://www.testeite.de/testskript.php"; //Bei Aufruf dieser URL wird einem im Browser bespielsweise eine Datei 'inhalt.txt' zum Download angeboten

$curl = curl_init($strURL);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true);
$inhalt= curl_exec($curl);
curl_close($curl);

echo $inhalt;

In der Variable $inhalt möchte ich nun gerne den Inhalt der Datei 'inhalt.txt' wiederfinden.

Wäre super, wenn mir jemand von Euch dabei helfen könnte :-)

Greetz,
Kevin

  1. Hello,

    Meine Frage ist nun, wie ich per PHP-Skript eine solche Datei automatisch downloaden und speichern kann. Hat jemand von Euch da einen Ansatz bzw. ein Snippet? Ich habe es schon per CURL versucht, allerdings wird mir nichts ausgegeben.

    Schau Dir z.B. die Erläuterungen im PHP-Manual an zu:
    http://de2.php.net/manual/en/function.readfile.php

    Gleich das erste Beispiel geht auf einen Download ein.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. Ich habe es schon per CURL versucht, allerdings wird mir nichts ausgegeben.

    Nichts ist zu wenig - je nachdem wie dieses Download-Script gemacht ist müsstest du irgendwas daherbekommen, zumindest einen HTTP-Header der dir ein 302 Found oder ähnliches verpasst.

    Beschäftige dich zuerst mit diesem Problem und gib dir aus, was bei dem Request daherkommt - wenn du das hast, können wir weiterreden.

    1. Ich habe es schon per CURL versucht, allerdings wird mir nichts ausgegeben.

      Nichts ist zu wenig - je nachdem wie dieses Download-Script gemacht ist müsstest du irgendwas daherbekommen, zumindest einen HTTP-Header der dir ein 302 Found oder ähnliches verpasst.

      Beschäftige dich zuerst mit diesem Problem und gib dir aus, was bei dem Request daherkommt - wenn du das hast, können wir weiterreden.

      Es ist tatsächlich so wie ich sagte: Der Inhalt der Variable 'inhalt' ist tatsächlich 0. Es steht schlicht nichts drinn. Ich gebe die downzuloadende Datei ja auch nicht direkt in der aufzurufenden URL an, sondern das Downloadskript, welches ich in der URL angebe, legt die zum Download angebotene Datei selbst fest. Daher kann es auch nicht zu einem 302 o.ä. kommen.

      1. Es ist tatsächlich so wie ich sagte: Der Inhalt der Variable 'inhalt' ist tatsächlich 0. Es steht schlicht nichts drinn. Ich gebe die downzuloadende Datei ja auch nicht direkt in der aufzurufenden URL an, sondern das Downloadskript, welches ich in der URL angebe, legt die zum Download angebotene Datei selbst fest. Daher kann es auch nicht zu einem 302 o.ä. kommen.

        Ich gehe davon aus, dass du bereits den Request machst, der _nach_ dem "selbst Festlegen" stattfindet.

        Und sofern du keinen Timeout bekommst, müsste immer eine Antwort vom Server daherkomme und sei es ein 404 oder sonstwas. Und was im Response Header steht ist entscheidend.

        Dass da "0" Daherkommt glaube ich nicht.

  3. Hi!

    Man klickt im Browser auf einen Link, welcher auf eine PHP-Seite (bspw. 'index.php') verweist. Kurze Zeit, nachdem die Seite geladen ist, wird einem eine Datei (bspw. 'inhalt.txt') zum Download angeboten. Der Unterschied zu einem "direkten" Download ist halt der, dass die Datei, welche einem nach dem Aufruf der 'index.php' zum Download angeboten wird, nicht direkt in der URL auftaucht.

    Trotzdem hat sie eine URL. Dem Browser wird nur vorher eine Seite übergeben, die den eigentlichen Request zeitverzögert anstößt. Um diese URL herauszufinden gibt es aber keine Generallösung. Da muss man schon die betreffende Seite direkt untersuchen.

    Meine Frage ist nun, wie ich per PHP-Skript eine solche Datei automatisch downloaden und speichern kann.

    Finde die eigentliche URL. Üblicherweise gibt es einen Direktlink, falls der verwendete Mechanismus nicht funktioniert (User hat beispielsweise Weiterleitungen oder Javascript deaktiviert).

    $url = "http://www.testeite.de/testskript.php"; //Bei Aufruf dieser URL wird einem im Browser bespielsweise eine Datei 'inhalt.txt' zum Download angeboten

    Das konnte ich mit der angegebenen URL nicht nachvollziehen. Wolltest du etwa nur ein Beispiel hinschreiben, dann nimm doch lieber die dafür vorgesehenene URLs statt einfach Fantasienamen zu wählen, die tatsächlich existieren können.

    Lo!