Loading
carregando...

Enviando arquivos para o servidor com PHP via FTP



Fala galera!

Nesse post vou mostrar pra vocês uma forma de se enviar arquivos do computador local para o servidor remoto (hospedagem) utilizando a linguagem php com o protocolo FTP.

A princípio pode parecer algo um tanto desnecessário, pois existem inúmeros programas (a maioria deles gratuitos) que realizam essa tarefa de forma extremamente simples.
Só para ficar em dois exemplos, cito o FileZilla e o CutFTP.

Mas imagine que interessante você ter um sistema em plataforma web, totalmente adaptado às suas necessidades e que possa ser acessado de qualquer lugar?

Legal né?

E fácil também. Pra fazer um script básico, utilizaremos 4 funções nativas do php, que são:

  • ftp_connect: responsável por se conectar ao servidor FTP
  • ftp_login: para autenticação no servidor
  • ftp_put: para enviar o(s) arquivo(s)
  • ftp_close: para se desconectar do servidor.

Veja o exemplo a seguir:

  1.  
  2. <?php
  3. /* Conectar com o servidor FTP */
  4. $conecta = ftp_connect('ftp.seudominio.com');
  5. if(!$conecta) die('Erro ao conectar com o servidor');
  6.  
  7. /* Autenticar no servidor */
  8. $login = ftp_login($conecta, 'seu_usuario', 'sua_senha');
  9.  
  10. if(!$login) die('Erro ao autenticar');
  11.  
  12. /* Liga modo passivo */
  13. ftp_pasv($conecta, true);
  14.  
  15. /* Envia o arquivo */
  16. $envia = ftp_put($conecta, '/public_html/arquivos/teste.txt', 'C:\Documents and Settings\Administrador\Desktop\teste.txt', FTP_ASCII);
  17.  
  18. if(!$envia){ 
  19.    die('Erro ao enviar arquivo!');
  20. }else{
  21.     echo 'Arquivo enviado com sucesso!';
  22. }
  23.  
  24. /* Desconecta do servidor */
  25. ftp_close($conecta);
  26. ?>
  27.  

A primeira coisa a se fazer é conectar com o servidor de FTP (geralmente: ftp.seudominio.com). Depois devemos nos autenticar nesse servidor com um usuário/senha válidos.

Com o modo passivo "desligado" é possível que dê erro, portanto é bom "setá-lo" como true.

Feito isso executamos a função ftp_put onde passo como parâmetro a instância da conexão ($conecta), o local remoto para onde será enviado o arquivo (inclusive com o nome), o arquivo local a ser enviado e o modo a ser utilizado (ASCII ou Binary).

Por questõs óbvias, fechamos a conexão com o servidor após a transferência do arquivo.

Todas essas funções são "booleanas", logo fiz as condições para ficar mais fácil de se identificar erros caso eles aconteçam.

Para ficar melhor o seu script, você pode colocar um formulário onde o usuário passe o nome do arquivo e clicando em um botão o arquivo seja enviado automaticamente.

Espero que lhe seja útil.

Abs.


Autor: Darc Web Sistemas
Data: 30/01/2014 21:01:09