2
respostas

Funções FTP com PHP

Estou tentado fazer o download de arquivo do servidor FTP e salvar ,utilizei o manual do php https://www.php.net/manual/pt_BR/function.ftp-fget.php , a conexão consigo fazer no servidor ftp. O problema está sendo fazer o download no local, qualquer pasta que coloco aparece o erro 1 e quando coloco o php://temp ocorre o erro 2.

        // Define variáveis para o recebimento de arquivo
        $arquivo_local = '/Downloads'; // Localização (local)
        $arquivo_remoto = './public_html/logoTeste.png'; // Pasta (externa)


        echo "<br />Connecting via FTP...";
        $ftp = ftp_connect('0.0.0.0'); //Retorna: True ou false                     
        // Conexão com Servidor FTP
        $login = ftp_login($ftp, 'teste' ,'teste');

        //Enable PASV ( Note: must be done after ftp_login() )
        $mode = ftp_pasv($ftp, TRUE);

        //Login OK ?
        if ((!$ftp) || (!$login) || (!$mode)) {
            die("Conexão com FTP Falhou !");
        }
        echo "<br />Login Ok.<br />";


        $handle = fopen($arquivo_local, 'r'); // Diretorio

       // Recebe o arquivo pelo FTP (FTP_ASCII(Text) e FTP_BINARY(Img))

        if( ftp_fget($ftp,$handle,$arquivo_remoto,FTP_BINARY, 0)){
            echo "\nSalvo com sucesso\n";
        }
        else {
            echo "Erro no Download\n";
        }
    // Encerra a conexão ftp
ftp_close($ftp);

Erro 1 - Quando tento em um local no PC A PHP Error was encountered Severity: Warning

Message: fopen(./C:): failed to open stream: No such file or directory

Filename: controllers/acessoFtp.php

Line Number: 59

Backtrace:

File: C:\xampp\htdocs\feature\application\controllers\acessoFtp.php Line: 59 Function: fopen

File: C:\xampp\htdocs\feature\index.php Line: 315 Function: require_once


A PHP Error was encountered Severity: Warning

Message: ftp_fget() expects parameter 2 to be resource, bool given

Filename: controllers/acessoFtp.php

Line Number: 63

Backtrace:

File: C:\xampp\htdocs\feature\application\controllers\acessoFtp.php Line: 63 Function: ftp_fget

File: C:\xampp\htdocs\feature\index.php Line: 315 Function: require_once

Erro 2 - Quando tento no php://temp A PHP Error was encountered Severity: Warning

Message: ftp_fget(): Data connection already open; Transfer starting.

Filename: controllers/acessoFtp.php

Line Number: 63

Backtrace:

File: C:\xampp\htdocs\feature\application\controllers\acessoFtp.php Line: 63 Function: ftp_fget

File: C:\xampp\htdocs\feature\index.php Line: 315 Function: require_once

2 respostas

Consegui fazer o download para a pasta Assets e Forçar o Download para o usuário, o problema agora é que o unlink não está apagando o arquivo em assets após forçar o download.

public function baixar(){
        //Trazer Arquivo Remoto pela lista de arquivos
        $this->conectar(); //Função com as Config de Conexão FTP
        $arquivo_remoto =  './httpdocs/teste/teste.png'; // Pasta (externa)
        $arquivo_local = './assets/teste.png'; //Puxar da lista de Arquivos Selecionado

        $this->ftp->download($arquivo_remoto, $arquivo_local, 'auto');
        //Força Download - Arquivo Dentro do Servidor Local
        force_download($arquivo_local, null);
        unlink($arquivo_local);
        $this->ftp->close();

    }

Outra coisa preciso fazer uma lista dos arquivos presentes na pasta e listar os nomes e caminho do arquivo para a função baixar, mas não estou conseguindo enviar o array para o view como teste, se eu mando um foreach com echo da certo.

public function lista(){
        //Mandar Arquivo remoto da lista para função baixar
        $this->conectar();  //Função com as Config de Conexão FTP

        $pasta_remoto = './httpdocs/hidro';

        $dados = $this->ftp->list_files($pasta_remoto);

        $this->load->view('lista', $dados );

    }
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!