Ankündigung

Einklappen
Keine Ankündigung bisher.

ftp upload: Lokales Verzeichnis

Einklappen

Neue Werbung 2019

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

  • ftp upload: Lokales Verzeichnis

    Hi!

    Ich würde gern von meiner Festplatte Bilder via ftp auf meinen Server laden.
    Da es ziemlich viel sein könnten (bzw. auch verschachtelt), wäre ein kompletter Verzeichnisupload am besten.
    Habe dazu ein script gefunden, das beim testen noch funktioniert hat (localhost), aber jetzt am server nicht mehr.
    Es scheitert immer an der opendir-Funktion.

    PHP-Code:
    function moveFolder($_server$_user_name$_user_pass$local_dir$remote_dir, &$count$id$part ''$parentFolder "") {
        
    // set up basic connection
        
    $_conn_id ftp_connect($_server);

        
    // login with username and password
        
    $_login_result ftp_login($_conn_id$_user_name$_user_pass);

        
    // check connection
        
    if ((!$_conn_id) || (!$_login_result)) {
            
    $_error  "FTP connection has failed!<br />";
            
    $_error .= "Attempted to connect to $_server for user $_user_name<br />";
            
    $result false;
        } else {
            
    $_error "Connected to $_server, for user $_user_name<br />";
            
    $result true;
        }
        
        echo 
    $_error;

        
    $conn_id $_conn_id;

        @
    ftp_chdir($conn_id"/shop/pics");
        @
    ftp_mkdir($conn_id$remote_dir);
        
        
    $handle = @opendir($local_dir) or die ("Could not open a stream for dir: 'upload'");
        
        while ((
    $file readdir($handle)) !== false) {
            
    $_error .= $file."<br/>";
            if ((
    $file != '.') && ($file != '..')) {
                if (
    is_dir($local_dir."/".$file)) {
                    
    $wsdir = new ws_directory();
                    
    $wsdir->folder $file;
                    
    $wsdir->parent $parentFolder;
                    
    $wsdir->ws_eventid $id;
                    
    $wsdir->Save();
                    
                    
    moveFolder($_server$_user_name$_user_pass$local_dir."/".$file.'/'$remote_dir."/".$file.'/'$count$id$part$wsdir->folder);
                } else {
                    
    $f[] = $file;
                    
    $count++;
                }
            }
        }

        
    closedir($handle);
        if (
    count($f)) {
            
    $i 0;
            
            
    sort($f);
            @
    ftp_chdir($conn_id$remote_dir);
            foreach (
    $f as $files) {
                
    $from = @fopen("$local_dir\\$files"'r');
                
    $moveFolder ftp_fput($conn_id$files$fromFTP_BINARY);

                
    // check upload status
                
    if (!$moveFolder) {
                    
    $_error .= "FTP upload has failed! From: $local_dir To: $remote_dir <br />";
                    
    $result false;
                } else {
                    
    $wspics = new ws_pics();
                    
                    
    $wspics->name str_pad($i4"0"STR_PAD_LEFT).$part;
                    
    $wspics->orig_name $files;
                    
    $wspics->ws_eventid $is;
                    
                    
    $wspics->Save();
                    
                    ++
    $i;
                    
    $result true;
                    
    $_error .= $file."true<br />";
                }
            }
        }
        
        echo 
    $_error;

        return 
    $result;
    // moveFolder 
    Der Output lautet wie folgt:
    Code:
    Could not open a stream for dir: C:\\TEMP\\FOLDER
    Kann mir da bitte jemand helfen? Muss ich vielleicht bei meinem Windows was freigeben oder am Server was einstellen? Oder hat dieses Script einen Fehler?
    Ich versuch mich schon seit 2 Tagen und es klappt nicht.

    Lg
    spidernet1979


  • #2
    Schau doch einfach mal, warum es fehlschlägt.

    Fehlerbehandlung mit Fehlerunterdrückung ist nicht so das praktikabelste ^^

    Ausserdem öffnest du für jedes Unterverzeichnis eine eigene FTP Verbindung!!

    Kommentar


    • #3
      Alle @ entfernen und echte Fehlermeldungen auswerten!
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        Binde mal nen Debugger ein
        Debugger

        Bitte nicht @@ftp_mkdir etc nutzen !!!

        Gruß Werner
        Gruß Werner
        Mein kleines Projekt: Fussball Satrup
        Wird ein OpenSource CMS für Fussballvereine

        Kommentar


        • #5
          Danke mal für die Tips. Hab sie auch angewendet, aber leider noch das selbe Problem. Hier mal die "echten Fehlermeldungen":

          Warning: opendir() [function.opendir]: Unable to access c:\\TEMP\\reitturnier_lassee2009 in /home/.sites/661/site1301/web/adm/inc/func/allgFunc.php on line 11

          Warning: opendir(c:\\TEMP\\reitturnier_lassee2009) [function.opendir]: failed to open dir: No such file or directory in /home/.sites/661/site1301/web/adm/inc/func/allgFunc.php on line 11

          Hab auch schon den Ordner auf meiner Festplatte freigegeben, hilft leider auch nix.
          Connection habe ich, da er den Folder am Server schon anlegt.

          Lg
          spidernet1979

          Kommentar


          • #6
            Wie soll opendir oder irgendeine Funktion auch auf c:\\TEMP\\reitturnier_lassee2009 zugreifen können! Das sind zwei physisch verschiedene Maschinen! Die eine sogar Linux!! Klar funktioniert das lokal, wenn Server und verwendetes Filesystem auf dem selben Rechner liegen.

            FTP via PHP ist FTP von Server zu Server! PHP kann nicht Deinen Client abbilden.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Das heisst, dass ich von meinem Server ausgehend nicht auf meine Festplatte zugreifen kann, um Dateien hochzuladen.
              Ich kann also nur die Dateien mit einem FTP-Programm hochladen und dann die restlichen Aktionen darauf machen.

              Danke für die Antwort.

              Lg
              spidernet1979

              Kommentar


              • #8
                Zitat von spidernet1979 Beitrag anzeigen
                Das heisst, dass ich von meinem Server ausgehend nicht auf meine Festplatte zugreifen kann, um Dateien hochzuladen.
                Wenn das ginge, wäre das doch eine ziemlich Sicherheitslücke. Mein könnte dir dann einfach Dateien unterschieben...
                "My software never has bugs, it just develops random features."
                "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                Kommentar


                • #9
                  Du unterteilst deine Aufgabe in folgende Schritte:

                  - Upload einer Datei durch den Benutzer über einen Browser
                  - Verschieben der hochgeladenen Datei auf den FTP Server.

                  Nicht so schwierig, oder?
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    - Upload einer Datei durch den Benutzer über einen Browser
                    - Verschieben der hochgeladenen Datei auf den FTP Server.
                    Dieser Ansatz ist zwar nicht so schwierig, aber das Problem hierbei ist, dass es sich um eine Bildergalerie handelt und diese auch schon mal an die 100 Bilder haben kann. Da werde ich alt, wenn ich die Dateien so hochladen will.

                    Lg
                    spidernet1979

                    Kommentar


                    • #11
                      Zip?
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #12
                        hey, danke. Gute Idee, werds mal so probieren.

                        Lg
                        spidernet1979

                        Kommentar


                        • #13
                          Hmm ist ja eigentlich nicht so schwer da selbst drauf zu kommen...
                          Für php gibts da übrigens "zip.lib.php" Unter Linux kannste des normalerweise direkt mit exec() und dann den Shell-Befehl rein knallen.
                          "My software never has bugs, it just develops random features."
                          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                          Kommentar


                          • #14
                            Zitat von Paul.Schramenko Beitrag anzeigen
                            Für php gibts da übrigens "zip.lib.php" Unter Linux kannste des normalerweise direkt mit exec() und dann den Shell-Befehl rein knallen.
                            PHP: Zip - Manual
                            VokeIT GmbH & Co. KG - VokeIT-oss @ github

                            Kommentar

                            Lädt...
                            X