FTP Datei kopieren

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

  • FTP Datei kopieren

    Das FTP-Skript liegt im Internet auf einem Server, ist also nicht lokal installiert, und soll Dateien kopieren können, die sich wiederum auf einem anderen Server im Internet befinden. Die copy()-Funktion ist hier so ohne weiteres ja nicht zu verwenden. Wie bekommt man die zu kopierende Datei vom Server ins Dateisystem des Servers, auf dem das Skript liegt?

  • #2
    mal die ftp-funktionen von php angesehen?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Ja, leider gibt es bei FTP keine Kopierfunktion.

      Kommentar


      • #4
        http://de.php.net/fread
        http://de.php.net/fwrite

        Kommentar


        • #5
          Quelle: http://www.hawkee.com/snippet/852/

          PHP-Code:
          <?php

          function ftp_copy($source_file$destination_file)
          {
              
          $ftp_server 'ftp.server.com';
              
          $ftp_user 'login';
              
          $ftp_password 'password';

              
          $conn_id ftp_connect($ftp_server);
              
          $login_result ftp_login($conn_id$ftp_user$ftp_password);

              if((!
          $conn_id) || (!$login_result))
              {
                      echo 
          "FTP connection has failed!";
                      echo 
          "Attempted to connect to $ftp_server for user $ftp_user";
                 }

              
          $upload ftp_put($conn_id$destination_file$source_fileFTP_BINARY);
              
          ftp_close($conn_id); 

              if(!
          $upload)
              {
                     echo 
          "FTP copy has failed!";
                 return 
          false;
                 }
              else
              {
                  return 
          true;
              }    
          }

          ?>

          Kommentar


          • #6
            @wentz: In deinem Beispiel muss die betreffende Datei über ftp_put() noch hochgeladen werden, d. h. vom lokalen Rechner. Ich dachte an das Kopieren von Dateien, die sich auf dem entfernten Server schon befinden. Oder wäre ein Upload (in diesem Fall dann eher ein 'Transload') der Dateien möglich von einem Server zum anderen ohne Formular input type="file"?

            @bla$ter: Können fread() bzw. fwrite() als Funktionen des Dateisystems auch entfernte Dateien lesen/schreiben? Wie gesagt, das Skript liegt auf dem einen Server, die Datei auf einem entfernten, auf dem ich mich über FTP eingeloggt habe.

            Kommentar


            • #7
              @bla$ter: Können fread() bzw. fwrite() als Funktionen des Dateisystems auch entfernte Dateien lesen/schreiben? Wie gesagt, das Skript liegt auf dem einen Server, die Datei auf einem entfernten, auf dem ich mich über FTP eingeloggt habe.
              Aus dem Manual:
              Wenn Sie ausschließlich eine Datei von einem FTP-Server lesen oder Schreiben wollen, sollten Sie die Verwendung der ftp:// Wrapper zusammen mit den Filesystem Funktionen in Betracht ziehen. Dies ermöglicht einen einfacheren und intuitivere Zugriff.

              Kommentar


              • #8
                geht das nicht mit "move_uploaded_file"???

                gibts da nicht ned copy-funktion?

                musst halt dann als source-file das alte file aufm server hernehmen...

                mfg
                infernalshade

                Kommentar


                • #9
                  Ich möchte ja die Dateien nicht nur lesen oder schreiben, sondern eben kopieren, und zwar außerhalb des Dateisystems liegende Dateien.

                  Kommentar


                  • #10
                    Was ist kopieren, wenn nicht lesen und schreiben?

                    Kommentar


                    • #11
                      OK, ich logge mich über das FTP-Skript auf einem Server ein, auf dem das Skript nicht liegt. Dann wähle ich eine Datei, um sie zu kopieren. Mit copy() geht es nicht.
                      Zuletzt geändert von weltvolk; 18.02.2008, 16:44.

                      Kommentar


                      • #12
                        PHP-Code:
                          $from=fopen($source,'rb');
                           
                        $to=fopen($dest,'wb');
                           if (
                        $from && tp) {
                            while(!
                        feof($from))
                              
                        fwrite($tofread($from4096));  
                          
                        fclose($to);     
                          
                        fclose($from);
                         } 

                        Kommentar


                        • #13
                          Vielen Dank, leider ist allow_url_fopen aus, da funktioniert es mit entfernten Dateien nicht.

                          Kommentar


                          • #14
                            In dem Fall solltest du auf curl zurück greifen.

                            Kommentar


                            • #15
                              OK, phpinfo() sagt '--with-curl', werde es versuchen, danke

                              Kommentar

                              Lädt...
                              X