Tipo,
Buenas tardes.
Esta característica de PHP ya es conocida por muchas personas, pero si este no es el caso, intentaré ayudar a aquellos que aún no conocen esta poderosa característica de PHP, que es la integración con servidores mediante el protocolo FTP, que nos permite transferir archivos entre servidores.
Conexión al 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 archivos
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;
}
Descargando archivos
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;
}
Listado de archivos
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;
}
Todavía tenemos la función. ftp_rawlist para enumerar archivos en FTP en detalle, mostrando permisos, fechas, etc.
Ejemplo:
$saida = ftp_rawlist($ftp, '/');
var_dump($saida);
El ejemplo anterior mostrará algo como esto:
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"
}
¡Y eso es todo! ¡Hasta la próxima a todos!
Comentários (0)
Carregando comentários…