Probleme mit FTP? Utopisch?!

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

  • Probleme mit FTP? Utopisch?!

    Hallo!
    Ich habe eine Frage bezgl. eines komplizierten Uploads von Dateien.
    Im Rahmen eines selbstgeschriebenen CMS möchte
    ich den Benutzern ermöglichen, Dateien von ihrer lokalen Festplatte auf den Webserver upzuloaden und diese dann ggf.
    auszulesen (mit einer Internetseite bspw.)

    Dieses Formular ist so gestrickt, dass die Buttons „Durchsuchen“ und „Submit“ (oder was da immer stehen mag) auf
    spanisch geschrieben sind.
    Dies lässt sich meines Erachtens nur mittels JS realisieren, bei der ein unsichtbarer Button darübergelegt wird und
    dieser den Namen „buscar“ (für durchsuchen) bekommt.
    Das Ganze wird vielleicht ein wenig klarer, wenn ich den Code mitposte (s.u.)

    Nun wird die ausgewählte Datei an ein PHP-Skript übergeben,
    welches dann einige Dinge mit dem Dateinamen macht (streichen des Pfades,
    so dass nur noch der Dateiname übrig bleibt = in die Datenbank
    soll nur der Name der Datei, nicht der komplette Pfad).

    Ist dies erledigt, so soll die Datei upgeloadet werden.
    Ich dachte, dass das immer mittels FTP möglich ist, aber das scheint
    nicht so, jedenfalls hat meine tagelange Recherche im Internet
    nichts brauchbares übergeben, bzw. die Skripte funktionieren
    nicht

    Nun direkt die Frage. Sind beide(!) Skripte so in Ordnung? Wieso funktioniert das Skript nicht?
    Ich danke euch schon mal für die Mühen…hier die Codes der beiden Dateien:

    [color="red"]form.htm[/color]
    Code:
    <html>
      <head>
        <title>Formular</title>
    	<script type="text/javascript">
          function go1()
          {
            document.a.b.click(); 
    <!--"a" ist der form-tag Identifizierer "id" - muss für alle
    <!-- Funktionen gleich sein, da nur ein Formular existiert-->
    
            document.a.c.value = document.a.b.value; 
    <!--"a" dient für den Durchsuchen-Button selbst -
    <!-- dessen Information wird an das Textfeld namens "c" übergeben
    <!-- zur Ansicht des Pfades-->
          }    
    </script>
    
      </head>
      <body>
      
        <table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%">
          <tr>
    	    <td valign="middle" align="center"> 
              <form method="post" action="upload.php" id="a" name="a" enctype="multipart/form-data">
                <input type="file" id="b" style="display:none"> 
    <!--FUNKTION DIE DEN EXPLORER AUFRUFT-->
            <input id="c" name="datei"> 
    <!--TEXTFELD INDEM DER PFAD ANGEZEIGT WIRD-->
            <input type="button" onclick="go1();" value="DATEI"> 
            <input type="submit" value="UPLOAD">
          </form>
    	    </td>
    	  </tr>
        </table> 
    	
      </body>
    </html>

    [color="red"]upload.php[/color]
    PHP-Code:
    <?php
      
      $suchedatei 
    strrpos($_POST["datei"],"\\");    
      
    $suchedatei += '1';
      
    $uploadgrafik substr($_POST["datei"],$suchedatei);
                

      
    // Einloggen mit Benutzername und Kennwort
      
    $conn_id ftp_connect("ftp.domain.de"); 
      
    $login_result ftp_login($conn_id"usr""pass"); 

      
    ftp_pasv($conn_idTRUE);

      
    //int ftp_put ( int ftp_stream, string remote_file, string local_file, int mode)
      
    ftp_chdir($conn_id"/datei");
      
    ftp_put($conn_id"$uploadgrafik"$_POST["datei"], FTP_BINARY);

      
    ftp_quit($conn_id);
      
      
      echo 
    "der string im textfeld: ".$_POST["datei"];
      echo 
    "<br>suchposition wo letztes\: ".($suchedatei-1);
      echo 
    "<br>suchposition wo dateiname beginnt: ".$suchedatei;
      echo 
    "<br>uploadgrafik: ".$uploadgrafik;
    ?>
    Ich hoffe, Ihr könnt mir da helfen, da ich echt nicht weiter weiß
    Zuletzt geändert von chefkochbln; 20.05.2005, 08:57.
    Geht nich, gibts nich!
    God is real...unless declared as integer!

  • #2
    Hallo,

    so ganz komm ich jetzt da nicht mit. Was willst genau machen? Eine Datei von der Festplatte eines Users uploaden oder eine Datei von irgendeinem Webspace via FTP laden?
    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


    • #3
      Original geschrieben von Quetschi
      Hallo,

      so ganz komm ich jetzt da nicht mit. Was willst genau machen? Eine Datei von der Festplatte eines Users uploaden oder eine Datei von irgendeinem Webspace via FTP laden?

      Ich möchte eine Datei von meiner Festplatte hochladen.
      Geht nich, gibts nich!
      God is real...unless declared as integer!

      Kommentar


      • #4
        Dann vergiss mal das ganze FTP-Zeug in deiner Upload.php und sieh dir mal das an:

        http://de2.php.net/manual/de/functio...oaded-file.php
        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


        • #5
          Hmm, schön und gut. Aber ich les mir das durch und sehe dann folgenden Kommentar:

          andrew@euperia,com
          04-Apr-2005 11:29
          Instead of using chdir or chmod 0777 a safer alternative to move_uploaded_files is to use PHP's ftp functions to move the file into a web dir.

          1. Make ftp connection to 127.0.0.1 with the correct username and password.
          2. ftp_chdir to the required directory.
          3. ftp_put ($_FILES['myfile']['tmp_name'], $finalfilename);
          4. ftp quit.

          Versteht ihr nun, wieso ich so verwirrt bin. Mein Standpunkt war bisher immer der, dass FTP ein Protokoll ist, mit dem Dateien vom client zum Server (upload), vom Server zum client (download), oder zwischen Servern zu verschieben, bzw. zu "transferieren". Steht jedenfalls so immer in den gängigen Lexika. -- Ergo müsste doch jeder zum Schluss kommen, dass wenn ich eine Datei von A nach B verschieben möchte, die entsprechenden FTP-Funktionen benutzen muss....oder?
          Geht nich, gibts nich!
          God is real...unless declared as integer!

          Kommentar


          • #6
            kann mir nicht vorstellen dass du mit deinem Script via FTP eine Datei auf deinen Server uppen kannst

            EDIT:
            Sorry, hab alles völlig falsch verstanden. Du verwendest FTP anstelle von move_uploaded_file() um die temporäre Datei in den Zielordner zu verschieben.

            Ich dachte du möchtest FTP benutzen um die Datei vom Client zu ziehen.
            Zuletzt geändert von Quetschi; 20.05.2005, 09:59.
            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


            • #7
              Original geschrieben von Quetschi
              kann mir nicht vorstellen dass du mit deinem Script via FTP eine Datei auf deinen Server uppen kannst

              Hmm, also es gibt definitiv NUR diese Lösung, die du angeschnitten hast? Auch, wenn sie noch so umständlich zu sein scheint? -- Sei ehrlich, bei dem comment von php.net und der Theorie sollte es doch möglich sein, per FTP eine Datei upzuloaden. Wie funktionieren sonst die ganzen FTP-Programme?
              Geht nich, gibts nich!
              God is real...unless declared as integer!

              Kommentar


              • #8
                Mit deinem Formular sendest du die Inhalte aller Formularfelder vom Client (Browser) zu deinem Server/Provider. Und da das Dateifeld vom Typ "File" ist, wird auch die ausgewählte Datei vom Client auf den Server geladen.

                Ergo musst du diese Datei nur noch mit den ganz normalen PHP-Datei/Verzeichnisfunktionen verschieden. Fertig. Ftp hat da nicht wirklich was zu suchen...

                gruss Markus
                Simploo CMS - das einfache Webseiten-Bearbeitungsprogramm

                Kommentar


                • #9
                  Siehe mein EDIT meines vorigen Postings.

                  Du kannst natürlich schon FTP benutzen um die Datei vom Temp zum Zielordner zu verschieben.

                  Ich benutze lieber move_uploaded_file(). Was an FTP da besser sein soll ist mir aber schleierhaft. Ist doch nur komplizierter. Ich lasse mich aber gerne eines besseren belehren

                  Nochmal EDIT:
                  Egal was du nun benutzen willst, die Datei wird immer via HTTP vom Client zu deinem Server übertragen. FTP spielt bei der Übertragung zu deinem Server keine Rolle.
                  Zuletzt geändert von Quetschi; 20.05.2005, 10:06.
                  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
                    Na, das hört sich ja so an, als ob ich mittels des Formulars die Datei bereits zum Server übertrage, das ist ja wohl nicht so oder?

                    Wobei ich glaube, dich zu verstehen. Dafür wäre dann der Befehl "move_uploaded_file()"? Aber bevor ich diesen Befehl benutze, wo befindet sich die Datei?
                    Ich kann mir das irgendwie nicht so sehr vorstellen.

                    @Quetschi
                    Ich auch, deshalb frage ich ja hier.
                    *lol*@FTP/HTTP......wofür benutze ich dann FTP? So, wie du es beschrieben hast, ist HTTP dafür verantwortlich, dass die Datei von lokal zum Webserver übertragen wird. Ich komm mir vor, wie bei der Sendung mit der Maus....

                    Aber an sich klingt es doch in sich schlüssig, oder?
                    Geht nich, gibts nich!
                    God is real...unless declared as integer!

                    Kommentar


                    • #11
                      PHP-Code:
                      move_uploaded_file 
                      verschiebt eine hochgeladene Datei aus einem temporären
                      Verzeichnis in das von Dir gewählte.

                      Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

                      Kommentar


                      • #12
                        Da gibts eigentlich nix zu lachen

                        Ein Dateiupload via Formular geschieht tatsächlich über das HTTP-Protokoll. Wenn du via FTP ne Datei von nem Client ziehen willst müsste dieser ja einen FTP-Server installiert haben und deinem Script die Zugangsdaten dazu mitteilen, damit dein Script ne ordentliche Verbindung aufbauen kann.

                        Beim Dateiupload via Formular wird Datei jedenfalls via HTTP auf den Server übertragen und wird dort in einem Temp-Verzeichnis abgelegt. Die Datei bleibt solange in diesem Temp-Verzeichnis wie das in dem Formular aufgerufene Skript (in deinem Fall upload.php) läuft oder die Datei von diesem Skript woanders hinverschoben wird. Dieses Verschieben kann in PHP nun mittels move_uploaded_file() geschehen oder mit den FTP-Funktionen von PHP. Aber da ist die Datei ja bereits auf dem 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


                        • #13
                          mit ftp überträgst du dateien zwischen 2 rechnern - ob client/server, server/client, server/server ist egal ..

                          ABER: wenn du ne datei per formular hochlädst (und das machst du), dann geht das alles per http über die bühne und du (bzw. php) finden die datei im verzeichnis /tmp (standardeinstellung in der php.ini - oder eben das entsprechende verz.)

                          willst du nun die datei innerhalb deines server-dateisystems verschieben, kannst du move_uploaded_file() verwenden: die fkt. weiß, dass sie die datei von obigen verzeichnis verschieben muss; wohin, sagst du ihr ja ..

                          willst du die datei auf einen anderen server schieben (was ich nicht vermute) dann kannst du die ftp funktionen bemühen - wovon ich aber wie gesagt nicht ausgehe ..

                          interessant für dich ist die superglobale $_FILES, aber das kennst du ja bereits ..
                          mfg,
                          [color=#0080c0]Coragon[/color]

                          Kommentar


                          • #14
                            Danke, ich glaub das hilft mir weiter...!!
                            Geht nich, gibts nich!
                            God is real...unless declared as integer!

                            Kommentar

                            Lädt...
                            X