Guys,
Good afternoon.
This PHP feature is already known to many people, but if this is not the case, I will try to help those who do not yet know this powerful PHP feature, which is integration with servers using the FTP protocol, which allows us to transfer files between servers.
Connecting to the server
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;
}
Sending files
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;
}
Downloading files
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;
}
Listing files
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;
}
We still have the function ftp_rawlist to list files on FTP in detail, displaying permissions, dates, etc.
Example:
$saida = ftp_rawlist($ftp, '/');
var_dump($saida);
The example above will display something like this:
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"
}
And that's it! Until next time, everyone!
Comentários (0)
Carregando comentários…