[Funktion] ftp script upload -> beschädigte datei

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

  • [Funktion] ftp script upload -> beschädigte datei

    Hallo,

    seit einiger zeit kann ich keine dateien mehr via ftp über ein script auf den server laden. bzw. werden die dateien zwar hochgeladen sind aber beschädigt. egal ob es sich um eine bilddatei, pdf oder word doc handelt. beim vergleich der dateigrößen ist aufgefallen dass die hochgeladenen dateien immer einige byte größer waren als die original datei.
    da es vor einigen wochen noch wunderbar funktionierte habe ich keine idee woran es leigen könnte.

    wäre über hilfe sehr dankbar

    das script ist folgendes:

    ftp class:
    PHP-Code:
    class scmsftp
    {
        protected 
    $stream;
        
        public function 
    Connect ($host$username$password$port '21'$timeout 90)
        {
            
    $chk    ftp_connect ($host$port$timeout);
            if (
    $chk)
            {
                
    $this->$stream $chk;
                return 
    ftp_login ($this->$stream$username$password);
            }
            return 
    false;
        }

        public function 
    Close ()
        {
            return 
    ftp_quit ($this->$stream);
        }

        public function 
    DoPASV ($on true)
        {
            
    $on = ($on == true) ? true false;
            return 
    ftp_pasv ($this->$stream$on);
        }

        public function 
    PutFile ($rfile$lfile$type FTP_ASCII)
        {
            
    $chk ftp_put ($this->$stream$rfile$lfile$type);
            return (
    file_exists ($lfile) && ($type == FTP_ASCII || $type == FTP_BINARY) && $chk) ? $chk false;
        }

        public function 
    GetFile ($rfile$lfile$type FTP_ASCII)
        {
            
    $chk     ftp_get ($this->$stream$lfile$rfile$type);
            return (
    file_exists ($lfile) && ($type == FTP_ASCII || $type == FTP_BINARY) && $chk) ? $chk false;
        }

        public function 
    DelFile ($file)
        {
            
    $chk ftp_delete ($this->$stream$file);
            return 
    $chk;
        }

        public function 
    GetFileSize ($file)
        {
            return 
    ftp_size ($this->$stream$file);
        }

        public function 
    Rename ($old$new)
        {
            return 
    ftp_rename ($this->$stream$old$new);
        }

        public function 
    DelDir ($dir)
        {
            
    $chk ftp_rmdir ($this->$stream$dir);
            return 
    $chk;
        }

        public function 
    MakeDir ($dir)
        {
            
    $chk ftp_mkdir ($this->$stream$dir);
            return 
    $chk;
        }

        public function 
    ListDirFiles ($directory$raw false)
        {
            
    $func = ($raw == false) ? 'ftp_nlist' 'ftp_rawlist';
            
    $chk $func ($this->$stream$directory);
            if (
    is_array ($chk))
            {
                
    $arr = array ();
                foreach (
    $chk as $key => $file)
                
    $arr[] = ($raw == false) ? str_replace ($directory '/'''$file) : $file;
                return 
    $arr;
            }
            return 
    false;
        }

        public function 
    SendRaw ($raw)
        {
            
    $chk ftp_exec ($this->$stream$raw);
            return 
    $chk;
        }

        public function 
    GetCurrentDir ()
        {
            return 
    ftp_pwd ($this->$stream);
        }

        public function 
    SwitchDir ($dir)
        {
            return 
    ftp_chdir ($this->$stream$dir);
        }

        public function 
    DoCHMOD ($path$chmod)
        {
            
    $chk    = (ftp_chmod ($this->$stream$chmod$path) == false) ? false true;
            return 
    $chk;
        } 
    und das script:

    PHP-Code:
    $dftp = new scmsftp();
    $dftp->Connect($cms['ftp_server'], $cms['ftp_user'], $cms['ftp_pass']);
    $dftp->SwitchDir($cms['ftp_basedir']."file/");
    $dftp->PutFile($_FILES['FCKeditor_File']['name'], $_FILES['FCKeditor_File']['tmp_name']);
    $dftp->Close(); 

  • #2
    als aller erstes mit einem hex-editor in die datei reinschauen - wo wurde was drangehangen, und wenn - zeigen.

    lässt sich das problem bei ascii-übertragung wiederholen?

    Kommentar


    • #3
      vielen dank für deine antwort....

      wird beim php ftp upload automatisch der binary mode verwendet?

      wie finde ich raus was dazu gekommen ist?

      wenn ich die datei mit einem "normalen" ftp programm hochlade gibt es kiene probleme.

      greetz
      dan

      Kommentar


      • #4
        es gibt keinen "standard"-modus.

        wenn du aber nachgeschaut hättest, bevor du eine fremde klasse verwendest (ja, es ist jetzt ein vorwurf, wenn ich mich irre, berichtige mich), wüsstest du, wie die methode putfile() aufgebaut ist - wenn du kein drittes parameter verwendest, kann auch keine binäre übertragung stattfinden und die doc/pdf/whatever-dateien werden beschädigt sein.

        ebenfalls nich gerade entgegenkommend fand ich, dass du meine frage nicht beantwortet hast.

        Kommentar


        • #5
          wie wird entschieden welcher modus verwendet wird wenn der modus nicht angegeben wird?

          vor deiner antwort wußte ich ja nicht dass es einen 3. parameter gibt. also auch nicht wie ich den ascii mode simulieren kann.

          Kommentar


          • #6
            ich zitiere:
            PHP-Code:
            public function PutFile ($rfile$lfile$type FTP_ASCII
            folgende fragen bitte beantworten:

            1. wieviele parameter erwartet die funktion?
            2. welche davon sind pflicht, welche nicht?
            3. was passiert, wenn die nicht-pflicht-parameter ausgelassen werden?

            Kommentar


            • #7
              schlechten tag gehabt?

              trotzdem danke für die hilfe... wenn ichs auf binary umstelle gehts wieder.

              greetz
              dan

              Kommentar


              • #8
                schlechten tag gehabt?
                ja, aber ich glaube nicht, dass es wichtig ist.

                dachte nur, du wirst dich mehr freuen, wenn du die lösung selbst findest als wenn ich sie dir direkt verrate.

                Kommentar


                • #9
                  ich fand es nur so seltsam dass es vor ein paar tagen noch wunderbar ging. ich hatte erst an eine veränderung der server conf gedacht...

                  danke nochmal

                  Kommentar

                  Lädt...
                  X