FTP Download Steuerung

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

  • FTP Download Steuerung

    Hallo,

    ich habe einen Mini-FTP Client mittels PHP gebastelt, damit die User nur kontrollierten Zugriff auf ein Verzeichnis haben. Upload und Delete sowie Übersichtsanzeige ist fertig, jetzt kämpfe ich mit der Download Möglichkeit. Ich suche eine Variante, dem User VOR dem Download das lokale Verzeichnis auswählen zu lassen, in das die Datei heruntergeladen wird, à la Upload Input type="file", wo das Win Explorer angezeigt wird.

    Hat jemand etwas derartiges schon mal realisiert?

    Gruss
    Alexander

  • #2
    wenn es ein download ist, wird der user in der regel vom browser gefragt, wohin gespeichert werden soll. das hat weniger mit php zu tun.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Zur näheren Erläuterung:

      Es handelt sich nicht um ein Bild welches dargestellt wird, sondern um eine Table in der die Dateinamen ausgelesen werden. User soll eine der Dateien markieren und innerhalb der selben Form den Button Download klicken. Den Download selbst versuche ich mit ftp_get() zu realisieren, aber dabei muss ich ja sowohl Dateinamen als auch Zielpfad angeben. Natürlich kann ich den User vorher mittels input den Zielpfad eingeben lassen, aber das ist nicht der Userfreundliche Weg, deswegen meien Frage.

      Gruss
      Alex

      Kommentar


      • #4
        wenn es dein eigener server is, dann bruachst du kein ftp_get

        wenn es nich dein server (= nich der server, auf dem das skript liegt) is, dann hol die datei per ftp_get auf deinen server und stoße dann den download an. evtl. (abhängig von fopen_wrappers) geht auch folgendes
        PHP-Code:
        //Header senden
        readfile('http://www.andere.domain.tld/datei.ext'); 
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          @ mrhappiness

          Entschuldige, aber das versteh ich nicht.
          Also der Server steht bei meinem Provider (UNIX). Das skript bzw. alle skripts liegen auf dem Server. Das Verzeichnis des Skripts ist nicht ident mit dem Verzeichnis wo die Dateien liegen die man Downloaden kann:

          Skript: home/admin/ftp_down.php
          Dateien: home/ger/games/*.*

          Der User sieht eine Table mit dem Inhaltsverzeichnis des Ordners Dateien vom Server, und zwar mach ich das so:

          $ftp = ftp_connect($my_host);
          if (! $ftp)
          echo "No connection to host!<br><br>";
          $res = ftp_login($ftp, $my_user, $my_pwd);
          if (! $res)
          echo "Login failed!<br><br>";
          if (! $contents = ftp_nlist ($ftp,"."))
          echo "Invalid directory!<br>";
          ftp_chdir ($ftp, "/www/home/ger/games");
          if ($f_del)
          ftp_delete($ftp, $filename);
          if ($f_down)
          ftp_get($ftp, $local_file, $filename, FTP_ASCII);
          echo "<span class='Untertitel'>Files in Games-Directory:<br></span>";
          echo "<table border='1' width='500'><tr><td align='center' class='text' valign='top'>\n";
          get_files($ftp);
          echo"</td></tr></table>\n";

          ftp_quit($ftp);

          function get_files($ftp){
          if (! $contents = ftp_nlist ($ftp, ".")) {
          echo "Verzeichnis falsch!\n";
          } else {
          echo "<form action='ftp.php' method='post'>\n";
          echo "<select name = 'filename' size='25' class='text'>\n";
          foreach ($contents as $var){
          $f_size = ftp_size ($ftp, $var);
          if ($f_size != -1)
          echo "<option value='".$var."'>\n".$var;
          }
          echo "</select>\n";
          echo "<br><input type='submit' name='f_down'
          value='Download'><br>\n";
          echo "<br><input type='submit' name='f_del' value='Delete'><br>\n";
          echo "</form>\n";
          }
          }

          Die Angabe die mir fehlt ist $local_file. Dafür suche ich eben die Funktion den User das Verzeichnis auswählen zu lassen.

          Gruss
          Alex

          Kommentar


          • #6
            ftp_get is (zumindest hab ich das so verstanden) dafür gedacht um mittels php eine ftp-verbindung zu einem server aufzubauen und dann dateien von diesem server auf den server zu schieben, auf dem das skript läuft; nicht um dateien beim user zu speichern (zu dem hast du ja auch keine ftp-verbindung aufgebaut)

            such einfach mal nach download und header hier im forum
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Original geschrieben von mrhappiness
              [...]zumindest hab ich das so verstanden[...]
              du hast es richtig verstanden.....

              @ah72103
              du hast hierbei bestimmt nur ein verständnisproblem.

              wenn du dem user eine datei zum download anbieten willst, welche sich auf dem lokalen rechner (dein server) befindet, werden keine ftp-funktionen benötigt.

              wie happy schon schrieb .... suche mal hier im forum. vorzugsweise bei den code-schnipseln.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                nachtrag:

                du wirst in php keine funktion finden, mittels derer du mit dem user interagieren kannst, da php ausgeführt wird, bevor der webserver die seite an den browser des users schickt.

                PHP: Serverseite
                User: Clientseite

                Interaktion: bedingt (über Anfordern einer Seite *g*)
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Nur mal zur Info:

                  ftp_get
                  (PHP 3>= 3.0.13, PHP 4 )

                  ftp_get -- Liest eine Datei des FTP-Servers und speichert sie lokal (download)
                  Beschreibung:
                  int ftp_get ( int ftp_stream, string local_file, string remote_file, int mode)


                  Bei Erfolg wird TRUE, sonst FALSE zurück gegeben.

                  ftp_get() lädt das remote_file vom FTP-Server und speichert es unter local_file auf ihren lokalen Arbeitsplatz. Der anzugebende Transfer-Parameter mode muss entweder FTP_ASCII oder FTP_BINARY sein.

                  Parameter:
                  stream: Der Verweis auf die bestehende Verbindung
                  local_file: Der Zielpfad und Name der Datei
                  remote_file: Der Quellpfad und Name der Datei
                  mode: FTP_ASCII oder FTP_BINARY


                  Weiter:
                  Natürlich kann ich die jeweiligen Aufrufe mittels Header senden, bzw. könnte ich ja einfach das jeweilige File (gif, jpg, php oder html) anzeigen, dann klickt der User rechts auf Speichern unter, etc. Aber IE hat ja die unangenehme Eigenschaft bei einem html Speichern unter, den Quelltext zu verändern, sodass er nicht mehr mit dem Original identisch ist und dann - was mach ich mit php Dateien?

                  Das einfachste wäre sicherlich den Usern einen stinknormalen FTP-Zugang zu ermöglichen, aber das soll aus bereits genannten Gründen unterbleiben.

                  Ich kämpf mich jetzt mal durch die Hinweise zum Header und probier mal durch - ist halt auch mein erstes mal sowas...

                  Gruss
                  Alex

                  Kommentar


                  • #10
                    Original geschrieben von ah72103
                    ftp_get -- Liest eine Datei des FTP-Servers und speichert sie lokal (download)
                    ja, verdammt - lokal auf deinem server, wo das script ausgeführt wird.
                    aber mitnichten lokal auf dem client des users.

                    so schwer kann das doch nicht zu raffen sein...
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      ftp_get() lädt das remote_file vom FTP-Server und speichert es unter local_file auf ihren lokalen Arbeitsplatz

                      Also wenn das mein lokaler Server ist dann weiss ich auch nicht...

                      Kommentar


                      • #12
                        anscheinend fehlen dir noch 1-2 grundlagen von php

                        so wie ich oben schon geschrieben habe, ist PHP etwas dass serverseitig ausgeführt wird. du wirst niemals nie nicht zugriff auf das dateisystem des benutzers erlangen.

                        und da du ftp_get ja in einem skript aufrufst, wäre es da nicht logisch anzunehmen, dass sich alles was im manual von lokal steht auf das aufrufende skript und rechner, auf dem es liegt bezieht?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          OK, kapiert.

                          Habt Ihr vielleicht eine Ahnung, ob ich mein Ziel anders erreichen kann, evtl. mit JS?

                          Gruss
                          Alex

                          Kommentar


                          • #14
                            Original geschrieben von mrhappiness
                            wenn es dein eigener server is, dann bruachst du kein ftp_get

                            wenn es nich dein server (= nich der server, auf dem das skript liegt) is, dann hol die datei per ftp_get auf deinen server und stoße dann den download an. evtl. (abhängig von fopen_wrappers) geht auch folgendes
                            PHP-Code:
                            //Header senden
                            readfile('http://www.andere.domain.tld/datei.ext'); 
                            header senden: einfach mal suchen

                            Original geschrieben von mrhappiness
                            such einfach mal nach download und header hier im forum
                            hast du nix gefunden?
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar

                            Lädt...
                            X