Nenhum produto encontrado nessa seleção.
Fazer upload de arquivos via FTP com PHP é bastante fácil. Com a ajuda de algumas funções e algumas verificações no arquivo que você está enviando, leva apenas alguns minutos para criar um script que envia seus arquivos de maneira bem rápida.
De fato, você vai gastar mais tempo analisando o arquivo que o usuário envia através do formulário HTML, do que enviando o arquivo para o servidor.
Neste tutorial vamos criar um script que envia arquivos para o servidor via conexão FTP. O PHP nos fornecerá algumas funções para realizar toda a conexão e transferência do arquivo.
Vamos verificar apenas a extensão e tamanho do arquivo enviado, sinta-se à vontade para modificar o script conforme sua necessidade.
Como funciona o Upload de arquivos via FTP com PHP?
Vamos precisar de apenas dois arquivos:
- index.php – O arquivo que conterá o nosso formulário HTML para o usuário enviar o arquivo;
- envia.php – O arquivo que envia o arquivo para o servidor utilizando conexão FTP;
O arquivo envia.php estará dividido em 4 etapas, todas você verá mais adiante neste artigo.
Arquivo index.php (formulário HTML)
Nosso formulário HTML é extremamente simples, veja:
<form action="envia.php" method="post" enctype="multipart/form-data"> Arquivo: <input type="file" name="arquivo"> <input type="submit" value="Enviar"> </form>
Você deve se preocupar com alguns fatores sobre o formulário em si, não vou entrar em detalhes sobre eles aqui, pois já falamos sobre isso no artigo:
Portanto, leia o artigo acima para mais detalhes.
Arquivo envia.php (faz o upload via FTP)
O arquivo envia.php está dividido em quatro etapas. Vamos passar por todas elas abaixo:
Configurações do Envio de arquivos
Vamos realizar nossas configurações logo no cabeçalho do arquivo, assim não precisaremos editar o restante quando formos criar novos formulários.
// Configura o tempo limite para ilimitado set_time_limit(0); /*-----------------------------------------------------------------------------* * Parte 1: Configurações do Envio de arquivos via FTP com PHP /*----------------------------------------------------------------------------*/ // IP do Servidor FTP $servidor_ftp = '127.0.0.1'; // Usuário e senha para o servidor FTP $usuario_ftp = 'luizotavio'; $senha_ftp = 'minhasenha'; // Extensões de arquivos permitidas $extensoes_autorizadas = array( '.exe', '.jpg', '.mp4', '.mkv', '.txt' ); // Caminho da pasta FTP $caminho = 'arquivos/'; /* Se quiser limitar o tamanho dos arquivo, basta colocar o tamanho máximo em bytes. Zero é ilimitado */ $limitar_tamanho = 0; /* Qualquer valor diferente de 0 (zero) ou false, permite que o arquivo seja sobrescrito */ $sobrescrever = 0;
Você pode visualizar tudo o que a primeira parte faz nos comentários do código acima.
Configurações do arquivo
As configurações do arquivo, são simplesmente os dados do arquivo enviado, como nome, tamanho e coisas do tipo.
/*-----------------------------------------------------------------------------* * Parte 2: Configurações do arquivo /*----------------------------------------------------------------------------*/ // Verifica se o arquivo não foi enviado. Se não; termina o script. if ( ! isset( $_FILES['arquivo'] ) ) { exit('Nenhum arquivo enviado!'); } // Aqui o arquivo foi enviado e vamos configurar suas variáveis $arquivo = $_FILES['arquivo']; // Nome do arquivo enviado $nome_arquivo = $arquivo['name']; // Tamanho do arquivo enviado $tamanho_arquivo = $arquivo['size']; // Nome do arquivo temporário $arquivo_temp = $arquivo['tmp_name']; // Extensão do arquivo enviado $extensao_arquivo = strrchr( $nome_arquivo, '.' ); // O destino para qual o arquivo será enviado $destino = $caminho . $nome_arquivo;
Dentre as funções utilizadas, temos:
- isset – Verifica se a variável está configurada;
- strrchr – Encontra a ultima ocorrência de um caractere em uma string ;
- exit – Termina o script onde essa função for apresentada
Verificações do arquivo enviado
Agora precisaremos verifica o arquivo enviado. Veja:
/*-----------------------------------------------------------------------------* * Parte 3: Verificações do arquivo enviado /*----------------------------------------------------------------------------*/ /* Se a variável $sobrescrever não estiver configurada, assumimos que não podemos sobrescrever o arquivo. Então verificamos se o arquivo existe. Se existir; terminamos aqui. */ if ( ! $sobrescrever && file_exists( $destino ) ) { exit('Arquivo já existe.'); } /* Se a variável $limitar_tamanho tiver valor e o tamanho do arquivo enviado for maior do que o tamanho limite, terminado aqui. */ if ( $limitar_tamanho && $limitar_tamanho < $tamanho_arquivo ) { exit('Arquivo muito grande.'); } /* Se as $extensoes_autorizadas não estiverem vazias e a extensão do arquivo não estiver entre as extensões autorizadas, terminamos aqui. */ if ( ! empty( $extensoes_autorizadas ) && ! in_array( $extensao_arquivo, $extensoes_autorizadas ) ) { exit('Tipo de arquivo não permitido.'); }
Agora podemos fazer a conexão e enviar o arquivo.
Conexão e upload via FTP com PHP
Os links para mais detalhes sobre as funções utilizadas estão ao abaixo do código. O restante está comentado no mesmo:
/*-----------------------------------------------------------------------------* * Parte 4: Conexão FTP /*----------------------------------------------------------------------------*/ // Realiza a conexão $conexao_ftp = ftp_connect( $servidor_ftp ); // Tenta fazer login $login_ftp = @ftp_login( $conexao_ftp, $usuario_ftp, $senha_ftp ); // Se não conseguir fazer login, termina aqui if ( ! $login_ftp ) { exit('Usuário ou senha FTP incorretos.'); } // Envia o arquivo if ( @ftp_put( $conexao_ftp, $destino, $arquivo_temp, FTP_BINARY ) ) { // Se for enviado, mostra essa mensagem echo 'Arquivo enviado com sucesso!'; } else { // Se não for enviado, mostra essa mensagem echo 'Erro ao enviar arquivo!'; } // Fecha a conexão FTP ftp_close( $conexao_ftp );
Dentre as funções utilizadas temos:
- ftp_connect – Conecta em um servidor FTP;
- ftp_login – Faz login no servidor FTP;
- ftp_put – Envia arquivos para o servidor FTP.
Código completo do arquivo envia.php
Veja nosso código completo:
<?php // Configura o tempo limite para ilimitado set_time_limit(0); /*-----------------------------------------------------------------------------* * Parte 1: Configurações do Envio de arquivos via FTP com PHP /*----------------------------------------------------------------------------*/ // IP do Servidor FTP $servidor_ftp = '127.0.0.1'; // Usuário e senha para o servidor FTP $usuario_ftp = 'luizotavio'; $senha_ftp = 'minhasenha'; // Extensões de arquivos permitidas $extensoes_autorizadas = array( '.exe', '.jpg', '.mp4', '.mkv', '.txt' ); // Caminho da pasta FTP $caminho = 'arquivos/'; /* Se quiser limitar o tamanho dos arquivo, basta colocar o tamanho máximo em bytes. Zero é ilimitado */ $limitar_tamanho = 0; /* Qualquer valor diferente de 0 (zero) ou false, permite que o arquivo seja sobrescrito */ $sobrescrever = 0; /*-----------------------------------------------------------------------------* * Parte 2: Configurações do arquivo /*----------------------------------------------------------------------------*/ // Verifica se o arquivo não foi enviado. Se não; termina o script. if ( ! isset( $_FILES['arquivo'] ) ) { exit('Nenhum arquivo enviado!'); } // Aqui o arquivo foi enviado e vamos configurar suas variáveis $arquivo = $_FILES['arquivo']; // Nome do arquivo enviado $nome_arquivo = $arquivo['name']; // Tamanho do arquivo enviado $tamanho_arquivo = $arquivo['size']; // Nome do arquivo temporário $arquivo_temp = $arquivo['tmp_name']; // Extensão do arquivo enviado $extensao_arquivo = strrchr( $nome_arquivo, '.' ); // O destino para qual o arquivo será enviado $destino = $caminho . $nome_arquivo; /*-----------------------------------------------------------------------------* * Parte 3: Verificações do arquivo enviado /*----------------------------------------------------------------------------*/ /* Se a variável $sobrescrever não estiver configurada, assumimos que não podemos sobrescrever o arquivo. Então verificamos se o arquivo existe. Se existir; terminamos aqui. */ if ( ! $sobrescrever && file_exists( $destino ) ) { exit('Arquivo já existe.'); } /* Se a variável $limitar_tamanho tiver valor e o tamanho do arquivo enviado for maior do que o tamanho limite, terminado aqui. */ if ( $limitar_tamanho && $limitar_tamanho < $tamanho_arquivo ) { exit('Arquivo muito grande.'); } /* Se as $extensoes_autorizadas não estiverem vazias e a extensão do arquivo não estiver entre as extensões autorizadas, terminamos aqui. */ if ( ! empty( $extensoes_autorizadas ) && ! in_array( $extensao_arquivo, $extensoes_autorizadas ) ) { exit('Tipo de arquivo não permitido.'); } /*-----------------------------------------------------------------------------* * Parte 4: Conexão FTP /*----------------------------------------------------------------------------*/ // Realiza a conexão $conexao_ftp = ftp_connect( $servidor_ftp ); // Tenta fazer login $login_ftp = @ftp_login( $conexao_ftp, $usuario_ftp, $senha_ftp ); // Se não conseguir fazer login, termina aqui if ( ! $login_ftp ) { exit('Usuário ou senha FTP incorretos.'); } // Envia o arquivo if ( @ftp_put( $conexao_ftp, $destino, $arquivo_temp, FTP_BINARY ) ) { // Se for enviado, mostra essa mensagem echo 'Arquivo enviado com sucesso!'; } else { // Se não for enviado, mostra essa mensagem echo 'Erro ao enviar arquivo!'; } // Fecha a conexão FTP ftp_close( $conexao_ftp );
Download
Caso queira baixar este script para completar seus estudos, utilize o link abaixo:
Download envia_arquivos_FTP_PHP.zip
É o mesmo script descrito no artigo acima.
Dúvidas?
Em caso de dúvidas, não hesite em deixar seu comentário. Teremos o maior prazer em ajudar.