Využij akce až 30 % zdarma při nákupu e-learningu. Více informací. Zároveň je tento týden sleva až 80 % na e-learning týkající se C# .NET
Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
discount week 30 halloween
Avatar
Tomáš Martin Holub:7.12.2020 11:03

Dobře, takže mám takový jednoduchý kus kódu, jediné co dělá je, že vezme obrázek zpracuje ho a nahraje na FTP do nějaké speciální složky, můj problém ovšem přichází v části, kdy prográmek všechny složky správně vytvoří, avšak při nahrávání souboru vyjede stejná chyba "invalid filename" na druhý pokus vždy funguje bez problému.

class FTPService extends \Library\BaseService {

    private $config;

    private $ftp;

    private $ftp_log;

    function __construct() {
        parent::__construct();
        $this->config = $this->loadConfig("file");
        $this->ftp = ftp_connect($this->config["ftp"]["ftp_hostname"]);
        $this->ftp_log = ftp_login($this->ftp, $this->config["ftp"]["ftp_username"], $this->config["ftp"]["ftp_password"]);
    }

    public function uploadToServer($path,$pathOnServer){
        if (!file_exists($pathOnServer)) {
            ftp_mkdir($this->ftp,$pathOnServer);
        }
        $this->makeDirectoryPath($pathOnServer);
        sleep(5);
        var_dump("hey");
        if (ftp_alloc($this->ftp, filesize($path),$this->ftp_log)) {
            ftp_put($this->ftp, $pathOnServer, $path, FTP_BINARY);
            return true;
        }
        return false;
    }

    public function makeDirectoryPath($path) {
        $nlist = ftp_nlist($this->ftp, ".");
        $pathParams = explode("/",$path);
        var_dump($path);
        if(count($pathParams) > 2){
            var_dump(!in_array("../" .$pathParams[0],$nlist));
            if(!in_array("./" .$pathParams[0],$nlist)){
                ftp_mkdir($this->ftp,$pathParams[0]);
            }
            var_dump(ftp_pwd($this->ftp) . "pwd");
            var_dump($nlist);
            var_dump($pathParams[0]);
            ftp_chdir($this->ftp,$pathParams[0]);
            return $this->makeDirectoryPath(substr($path,strlen($pathParams[0])-strlen($path)+1));
        }else{
            if(!in_array("./" .$pathParams[0],$nlist)){
                ftp_mkdir($this->ftp,$pathParams[0]);
                return true;
            }
            ftp_chdir($this->ftp,"/");
            var_dump("bumbum");
            return true;
        }
    }
}

Zkusil jsem: Zkoušel jsem dávat např. odezvu v PHP, jestli se např. nedělají příkazy asynchronně, tzn. složky by se dělali poté, co se soubor začne nahrávat ... nepomohlo.

Chci docílit: Snažím se dosáhnout plně fungujícího vytvoření složky a nahrání souboru.

Editováno 7.12.2020 11:04
 
Odpovědět
7.12.2020 11:03
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Tomáš Martin Holub
Tomáš Martin Holub:7.12.2020 22:28

Ok, omlouvám se, zjistil jsem kde je chyba. Funkci jsem ukončil returnem dříve, než se změnila do původní složky, takže to chtělo zapsat file místo např. /slozka1/sloz­ka2/soubor.txt tak do slozka1/slozka2/sloz­ka1/slozka2/sou­bor.txt, moje chyba.

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
7.12.2020 22:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.