Download per FTP schreibt auf dem Server???

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

  • Download per FTP schreibt auf dem Server???

    Hallo zusammen,

    ich versuche, Dateien per FTP vom Server auf eine lokale Maschine zu bekommen.
    Mein Problem ist, dass die Dateien nicht auf dem Client geschrieben werden, sondern in das entsprechende Zielverzeichnis auf dem Server (falls es existiert, ansonsten gibt’s natürlich eine Fehlermeldung).

    Die Datei „$source_file“ liegt auf dem Server und ist komplett mit Pfadangabe.
    „$target_file“ habe ich (mittlerweile) soweit vereinfacht, dass ich dort einen festen Pfad (d:\download) angegeben habe und per „basename“ den reinen Dateinamen von „$source_file“ anhänge.

    Ergebnis des Scriptes ist eine downgeloadete Datei im entsprechenden Verzeichnis der Servers und nicht des Clients.
    Auch Versuche mit „ftp_pasv“ haben keine Verbesserung gebracht – wobei mir allerdings nicht klar ist, wie ich überprüfen kann, ob der Passivmodus nun wirklich aktiviert ist oder nicht (und ob das für mein Problem überhaupt relevant ist). Als Ergebnis der Funktion „ftp_pasv“ wird mir ja nur geliefert, OB der Befehl funktioniert hat, aber nicht der Status der Verbindung.

    Irgendwelche Ideen dazu?

    PHP-Code:
    $conn_id ftp_connect ($host); 
    $login_result ftp_login ($conn_id"anonymous"""); 
    // $passiv=ftp_pasv($conn_id, 1); 

    if ((!$conn_id) || (!$login_result)) 

    echo 
    "Ftp-Verbindung nicht hergestellt!"
    echo 
    "Verbindung mit $host als Benutzer $user nicht möglich"
    die; 

    else 

    echo 
    "<br>Verbunden mit \"$host\" als Benutzer \"$user\" <br> "


    $target_file="d:\\download\\" basename($source_file); 

    $getload ftp_get($conn_id$target_file$source_fileFTP_BINARY); 

    if (!
    $getload

    echo 
    "Ftp get war fehlerhaft!"

    else 

    echo 
    "<br>Datei $source_file vom $host in das Verzeichnis $target_file geschrieben"


    PHP: Version 5
    Server OS: Windows

    Für Tipps wäre ich dankbar!!
    Grüße aus Köln
    Jürgen

  • #2
    PHP-Code:
    $target_file="d:\download\" . basename($source_file); 
    das sieht aber nach einem lokalen pfad aus.

    setz den pfad mal so : \\name_des_clients\ordner

    gruß
    peter
    Zuletzt geändert von Kropff; 09.06.2005, 09:53.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hallo Peter,

      die Darstellung des PHP Codes hatte mich auch zuerst irritiert. Da werden offensichtlich diverse "\" gefiltert.
      Fakt ist, dass das Script als solches funktioniert, also FTP connect, login, get - nur wird die Datei nicht auf den Client, sondern auf den Server geschrieben.

      Gruß
      Jürgen

      Kommentar


      • #4
        Re: Download per FTP schreibt auf dem Server???

        Original geschrieben von bernina
        ich versuche, Dateien per FTP vom Server auf eine lokale Maschine zu bekommen.
        Und auf der lokalen Maschine läuft ein FTP-Server, zu dem du eine Verbindung aufbauen kannst?

        Außerdem speichert man Daten auf einem FTP-Server mit ftp_put

        Dein Skript baut die Verbindung zu einem FTP-Server auf und lädt eine Datei runter.
        Die Datei wird auf dem PC gespeichert, auf dem auch der Webserver läuft.
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Und auf der lokalen Maschine läuft ein FTP-Server, zu dem du eine Verbindung aufbauen kannst?
          Nein, der FTP Server läuft gemeinsam mit dem Web- und dem PHP Server auf derselben Maschine.

          Außerdem speichert man Daten auf einem FTP-Server mit ftp_put
          Ich möchte die Datei nicht auf dem FTP Server, sondern auf dem Client speichern.

          Dein Skript baut die Verbindung zu einem FTP-Server auf und lädt eine Datei runter.
          Die Datei wird auf dem PC gespeichert, auf dem auch der Webserver läuft.
          Wie kriege ich ihn dazu, die Datei auf dem anfragenden Client zu speichern? Das ist genau mein Problem.

          Oder funktioniert die Installation von Web-, PHP- und FTP-Server auf derselben Maschine prinzipiell nicht?

          Gruß
          Jürgen

          Kommentar


          • #6
            Original geschrieben von bernina
            Wie kriege ich ihn dazu, die Datei auf dem anfragenden Client zu speichern?
            in dem du ihm diese zum download anbietest.
            http://www.php-faq.de/q/q-datei-download.html

            Oder funktioniert die Installation von Web-, PHP- und FTP-Server auf derselben Maschine prinzipiell nicht?
            doch - aber was hat das mit deinem problem zu tun?
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Tja, manchmal sitzt man ja auf der Leitung...
              Mir ist jetzt wenigstens schon mal klar geworden, dass ich mein Problem gar nicht per FTP lösen kann, weil der Server am falschen Ende läuft...

              in dem du ihm diese zum download anbietest.
              Danke für den Tipp. Auf die Seite war ich auch schon mal gestoßen, wollte mich aber damit nicht auseinander setzen. Das bleibt mir aber wohl doch nicht erspart. Die Funktionsweise ist mir nämlich momentan überhaupt noch nicht klar (deshalb hatte ich eine Lösung erst mal hier bei den Einsteigern gesucht....).
              Ich werd' mich also jetzt mal mit diesen Headern beschäftigen. Mal sehen was dabei rauskommt.

              Kommentar


              • #8
                in dem du ihm diese zum download anbietest.
                Im Prinzip geht's.
                Allerdings habe ich jetzt wieder das Problem, das ich eigentlich per FTP umgehen wollte. Mit der HEADER-Lösung kann ich jeweils nur eine Datei übertragen, wobei der Anwender dies auch jedesmal bestätigen muss (wie beim download mit <input>).
                Ich möchte aber mehrere Dateien gleichzeitig ohne weitere Eingriffe des Anwenders downloaden. Die gewünschten Dateien hat der Anwender vorher per checkbox selektiert.
                Da ich den Dateinamen, unter dem die Datei gespeichert werden soll, mitgebe, bräuchte ich nur die Möglichkeit, jedesmal die explizite Bestätigung zum Download zu unterbinden also quasi den Download im Hintergrund.
                Geht das?


                Vielleicht noch zur Erklärung:
                Das Ganze spielt sich firmenintern ab. Es gibt also keine sicherheitstechnischen Bedenken bezüglich des Downloads. Die Anwender sollen innerhalb der Anwendung die Möglichkeit haben, Daten, die in einer DB2 gespeichert sind (und vor dem Download auf die Serverplatte geschrieben werden), als Datei auf ihren Rechner zu bekommen.

                Kommentar


                • #9
                  Firmenintern sollte es mit den File-funktionen von PHP möglich sein sofern dies nicht durch irgendwelche Sicherheitseinstellungen unterbunden wird. Allerdings darfst in diesem Script keine Festplatte direkt mit D:\... ansprechen, so bleibst immer auf dem Rechner auf dem das Skript läuft, sondern so wie es Kropff bereits gesagt hat:

                  \\name_des_clients\freigabename_der_platte\verzeichnis

                  Mit FTP wirst nix erreichen, da kannst du dich auf den Kopf stellen, außer du installierst bei allen Clients nen FTP-Server.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Original geschrieben von Quetschi
                    Mit FTP wirst nix erreichen, da kannst du dich auf den Kopf stellen, außer du installierst bei allen Clients nen FTP-Server.
                    stümmt... klingt aber komisch, wenn man's so liest...

                    Kommentar


                    • #11
                      OffTopic:
                      klingt komisch, is aber so
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #12
                        Mit FTP wirst nix erreichen, da kannst du dich auf den Kopf stellen, außer du installierst bei allen Clients nen FTP-Server
                        Tja, das hatte ich dann mit zwei weinenden Augen auch erkannt...


                        \\name_des_clients\freigabename_der_platte\verzeichnis
                        Hier freigabename_der_platte ist dann wieder die Stelle, die ich eigentlich vermeiden wollte. Das ganze sollte möglichst einfach für den Anwender (also kein IT Support, der vorher bestimmte Laufwerke freigibt, Programme installiert o.ä.) abgehen: Einfach Browser starten und ohne weitere Eingriffe von außen arbeiten können...

                        Kommentar


                        • #13
                          Ganz hab ich zwar noch ned verstanden was überhaupt erreicht werden soll, aber:

                          Ohne ein freigegebenes Laufwerk auf dem Client-rechner wirds glaub ich ned gehen, korrigiert mich bitte falls es anders auch ginge.

                          Einfach Browser starten und ohne weitere Eingriffe von außen arbeiten können...
                          der User soll vom Client-PC aus den Browser aufrufen, dann auf nen Link klicken oder ein Form ausfüllen und daraufhin soll dass Script irgendwas das aus ner DB kommt bei ihm auf die Platte schreiben, kommt das ungefähr hin?
                          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                          Schön - etwas Geschichte kann ja nicht schaden.
                          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                          Kommentar


                          • #14
                            der User soll vom Client-PC aus den Browser aufrufen, dann auf nen Link klicken oder ein Form ausfüllen und daraufhin soll dass Script irgendwas das aus ner DB kommt bei ihm auf die Platte schreiben, kommt das ungefähr hin?
                            Der User kann (soll können) per checkbox diverse Dateien anklicken, um sie auf seiner lokalen Platte abzuspeichern ohne für jede Datei noch mal gefragt zu werden, ob er wirklich möchte...
                            Die Inhalte der Dateien befinden sich zum Zeitpunkt der Selektion noch in einer DB2 (deshalb auch kein direkter Zugriff auf die Daten einfach übers Netzwerk).
                            Nach dem submit durch den User werden die Dateien auf dem Server generiert und zum User übertragen. So die Idee...

                            Kommentar


                            • #15
                              Und diese User haben allesamt keine freigegebenen Laufwerke?
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X