Ankündigung

Einklappen
Keine Ankündigung bisher.

Datei vom Server auf die lokale Festplatte downloaden

Einklappen

Neue Werbung 2019

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

  • Datei vom Server auf die lokale Festplatte downloaden

    Hallo zusammen!

    Google&Co. haben leider nicht den erhofften Erfolg gebracht, daher versuch ich mein Glück einfach hier:

    Benutzer meiner Website füllen ein Formular aus, dessen Inhalt als schlichte Textdatei in einem Verzeichnis auf dem Server abgelegt wird.

    Als weiterer Schritt ist nun angedacht, die Dateien manuell "abzuarbeiten". Das könnte man über einen direkten FTP-Zugriff realisieren, was ich aber nicht anbieten möchte, da auch Personen auf diese Dateien zugreifen sollen, die schlicht von FTP keinen blassen Schimmer haben

    Momentan hab ich's so realisiert, daß ich den Inhalt des Verzeichnisses mit opendir/readdir in ein Array auslese und daraus dann per PHP eine Liste der Dateinamen mit einem Link-Button dahinter erstelle. Button anklicken öffnet die Textdatei im Browser, rechtsklick-speichern speichert auf die Festplatte.
    Vorteil für den Benutzer: Er ruft eine Unterseite auf der Website auf und hat den Dateizugriff - kein FTP-Programm mehr nötig.

    Das Verfahren würde ich aber gerne folgendermaßen ändern:
    Die ermittelten Dateinamen werden in einem Formular mit Checkboxen ausgegeben, der Benutzer klickt an, welche Datei er downloaden möchte, gibt ein Zielverzeichnis seiner Festplatte an, schließt das Formular mit Absenden ab und dann werden die ausgewählten Dateien vom Server auf den Zielrechner übertragen.

    Folgenden Code hab ich jetzt zusammengestellt:

    PHP-Code:
    // URL: http://www.beispiel.de

    $ftp_server="beispiel.de";
    $ftp_user_name="user";
    $ftp_user_pass="pass";
    $webpfad="verzeichnis/";     // Dateien im Ordner "www.beispiel.de/verzeichnis/bsp.txt"
    $discpfad="c:\\download\\";  // Datei auf Festplatte "c:\download\bsp.txt"

    $conn_id ftp_connect($ftp_server);

    $login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass);

    ftp_pasv($conn_idtrue); 

    ftp_chdir($conn_id$webpfad);

    // $webpfad.$datei  -> Datei auf dem Server 
    // $discpfad.$datei -> Datei auf der Festplatte

    if (ftp_get($conn_id$webpfad.$datei$discpfad.$dateiFTP_BINARY)) 
        {
              echo 
    "download erfolgreich\n";
        } 
    else 
        {
            echo 
    "download nicht erfolgreich\n";
        }

    ftp_close($conn_id); 
    Wenn ich das Skript ausführe erhalte ich die Meldung "download erfolgreich", die Datei wird allerdings nicht geladen - das Verzeichnis auf der Festplatte bleibt leer.
    Mach ich irgendwo einen Denkfehler - gibt's andere Wege zum gleichen Ergebnis? Woran kann's liegen?

    Vielen Dank vorab,
    Holger

  • #2
    Willkommen im Forum.

    Du schreibst da einmal $discpfad und einmal $diskpfad. Vielleicht hast du damit irgendwas vom Server auf den Server „runtergeladen“.

    Deine Nutzer führen dieses PHP-Script dann lokal bei sich aus oder wie ist das gedacht?

    Weil sie dazu PHP und dergleichen installiert haben müssten, finde ich den Ansatz gerade etwas unpraktisch.

    Kommentar


    • #3
      Danke

      disk/cpfad: war ein Vertippter weil ich den Codeschnipsel fürs Forum angepasst hatte - ist auch schon geändert

      Die Benutzer rufen eine Unterseite der Website auf - direkt oder per Link spielt ja in dem Fall keine Rolle: www.beispiel.de/download

      Da werden dann die Inhalte des betreffenden Verzeichnisses zum Download angeboten, was ja per Hyperlink und "speichern unter" problemlos klappt. Jetzt soll's eben nur eleganter gelöst werden: Liste mit Checkbox, gewünschte Datei anklicken, einmal Button drücken, Download wird serverseitig erledigt.

      Wenn der Benutzer die Seite über seinen Browser aufruft muss bei ihm ja nichts weiter installiert sein - PHP liegt ja auf meinem Server, die Ausführung passiert ja auch von dieser Seite aus. Es geht, wie gesagt, nur darum: Wie lade ich eine Datei vom Server auf eine Festplatte runter - der Upload funktioniert mittels PHP einfwandfrei.

      Kommentar


      • #4
        Das funktioniert so prinzipiell nicht. Wenn du bei ftp_get so was wie c:\download angibst, bezieht sich das niemals auf das Dateisystem des Besuchers, sondern immer auf das Dateisystem, auf dem das Script ausgeführt wird. Deshalb kam ich darauf, dass der Nutzer das Script bei sich ausführen müsste.

        Daumenregel: Du kommst von einer Webseite/einem Webserver aus nicht an das Dateisystem des Besuchers ran (auch nicht per JavaScript). Ansonsten könnte zum Beispiel jede beliebige Seite jedem Besucher Dateien an einen beliebigen Ort auf dessen Festplatte schieben. Das wäre aus diversen Gründen sehr sehr ungut.

        Wie lade ich eine Datei vom Server auf eine Festplatte runter
        Downloads werden über eine HTTP-Response mit entsprechend gesetzten Headern ausgelöst. Die Response wird dann vom Browser ausgewertet und führt – je nach Einstellung – zum bekannten „Speichern unter“-Dialog oder zum automatischen Download in ein zuvor im Browser festgelegtes Download-Verzeichnis.

        Siehe etwa in der Doku Example #1:

        - http://php.net/manual/en/function.readfile.php

        PS: Bitte example.org, example.com, example.net als Beispiel-Domains verwenden. Die sind dafür vorgesehen.

        Kommentar

        Lädt...
        X