Pessoal,
Boa tarde.
Esse recurso do PHP já é conhecido por muita gente, mas se não for o caso, vou tentar ajudar quem ainda não conhece esse poderoso recurso do PHP, que é a integração com servidores utilizando o protocolo FTP, que nos permite transferir arquivos entre servidores.
Conectando no servidor
public function conectarFTP()
{
$servidor = 'ftp.servidor.com.br'; // Endereço
$usuario = 'usuario_ftp'; // Usuário
$senha = 'senha_ftp'; // Senha
$porta = 21; // Porta padrão
$timeout = 9000; // Tempo em segundos para encerrar a conexão caso não haja resposta
$ftp = ftp_connect( $servidor, $porta, $timeout ); // Retorno: true ou false
if ( !$ftp )
{
return false;
}
$login = ftp_login( $ftp, $usuario, $senha ); // Retorno: true ou false
if ( !$login )
{
return false;
}
return $ftp;
}
Enviando arquivos
public function enviarArquivosPorFTP( $strArquivoLocal, $strArquivoRemoto )
{
$ftp = $this->conectarFTP();
if ( !is_resource( $ftp ) )
{
return false;
}
if ( !is_file( $strArquivoLocal ) )
{
echo "<br/>Arquivo de origem '{$strArquivoLocal}' não existe!";
return false;
}
// Alterna o modo de conexão para PASSIVO. No modo passivo, as conexões de dados são iniciadas pelo cliente, ao invés do servidor. Pode ser necessário se o cliente estiver atrás de um firewall.
ftp_pasv( $ftp, true );
// Faz o upload do arquivo no modo BINÁRIO (Deve ser FTP_ASCII ou FTP_BINARY.)
$envio = ftp_put( $ftp, $strArquivoRemoto, $strArquivoLocal, FTP_BINARY ); // Retorno: true / false
if ( $envio )
{
echo "<br/>Arquivo '{$strArquivoLocal}' enviado para o FTP como '{$strArquivoRemoto}'!";
}
else
{
echo "<br/>Falha ao enviar o arquivo {$strArquivoLocal} para o FTP!";
ftp_close( $ftp ); // Fecha a conexão com o FTP
return false;
}
ftp_close( $ftp ); // Fecha a conexão com o FTP
return true;
}
Baixando arquivos
public function baixarArquivosPorFTP( $strArquivoRemoto, $strArquivoLocal )
{
$ftp = $this->conectarFTP();
if ( !is_resource( $ftp ) )
{
return false;
}
// Alterna o modo de conexão para PASSIVO. No modo passivo, as conexões de dados são iniciadas pelo cliente, ao invés do servidor. Pode ser necessário se o cliente estiver atrás de um firewall.
ftp_pasv( $ftp, true );
// Faz o download do arquivo no modo BINÁRIO (Deve ser FTP_ASCII ou FTP_BINARY.)
$download = ftp_get( $ftp, $strArquivoLocal, $strArquivoRemoto, FTP_BINARY ); // Retorno: true / false
if ( $download )
{
echo "<br/>Arquivo '{$strArquivoRemoto}' baixado com sucesso do FTP para '{$strArquivoLocal}'";
}
else
{
echo "<br/>Falha ao baixar o arquivo {$strArquivoRemoto} do FTP!";
ftp_close( $ftp ); // Fecha a conexão com o FTP
return false;
}
ftp_close( $ftp ); // Fecha a conexão com o FTP
return true;
}
Listando arquivos
public function listarArquivosPorFTP( $strDiretorio, $strBusca )
{
$ftp = $this->conectarFTP();
if ( !is_resource( $ftp ) )
{
return false;
}
// Alterna o modo de conexão para PASSIVO. No modo passivo, as conexões de dados são iniciadas pelo cliente, ao invés do servidor. Pode ser necessário se o cliente estiver atrás de um firewall.
ftp_pasv( $ftp, true );
// Altera o diretório atual para "/arquivos/fotos/"
ftp_chdir($ftp, "/arquivos/fotos/");
// Lista os arquivos na forma de array()
$arquivos = ftp_nlist($ftp, ".");
ftp_close( $ftp ); // Fecha a conexão com o FTP
return $arquivos;
}
Ainda temos a função ftp_rawlist para listar os arquivos no FTP de forma detalhada, exibindo permissões, datas, etc..
Exemplo:
$saida = ftp_rawlist($ftp, '/');
var_dump($saida);
O exemplo acima irá exibir algo como isso:
array(3) {
[0]=>
string(65) "drwxr-x--- 3 vincent vincent 4096 Jul 12 12:16 public_ftp"
[1]=>
string(66) "drwxr-x--- 15 vincent vincent 4096 Nov 3 21:31 public_html"
[2]=>
string(73) "lrwxrwxrwx 1 vincent vincent 11 Jul 12 12:16 www -> public_html"
}
E é isso! Até a próxima, pessoal!
Comentários (0)
Carregando comentários…