Upload file via FTP - PHP

0

I'm trying to upload files to a specific folder on my Hostgator server, however I put the exact path of the folder and the file does not appear in the folder that set the path, it appears in the root folder. Here is the code:

'

/*-----------------------------------------------------------------------------*
 * Parte 1: Configurações do Envio de arquivos via FTP com PHP
/*----------------------------------------------------------------------------*/

// IP do Servidor FTP
$servidor_ftp = 'br476.hostgator.com.br';

// Usuário e senha para o servidor FTP
$usuario_ftp = 'hugohs';
$senha_ftp   = 'ajbsistemas2018';

// Extensões de arquivos permitidas
$extensoes_autorizadas = array( '.exe', '.jpg', '.mp4', '.mkv', '.txt', '.png' );

// Caminho da pasta FTP
$caminho = '/public_html/Video';

/* 
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('<br> <p class="alert alert-danger d-flex justify-content-center"> Nenhum arquivo enviado! </p>');
}

// 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('<br> <p class="alert alert-danger d-flex justify-content-center"> Arquivo já existe. </p>');
}

/* 
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('<br> <p class="alert alert-danger d-flex justify-content-center"> Arquivo muito grande. </p>');
}

/* 
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('<br> <p class="alert alert-danger d-flex justify-content-center"> Tipo de arquivo não permitido. </p>');
}

/*-----------------------------------------------------------------------------*
 * 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 '<br> <p class="alert alert-success d-flex justify-content-center"> Arquivo enviado com sucesso! </p>';
} else {
    // Se não for enviado, mostra essa mensagem
    echo '<br> <p class="alert alert-danger d-flex justify-content-center"> Erro ao enviar arquivo! </p>';
}

// Fecha a conexão FTP
ftp_close( $conexao_ftp );'

The file returns a successful send message, but instead of appearing in the "softwares" folder, it appears in the "public_html" folder.

Do you have any solutions to this problem?

    
asked by anonymous 01.11.2018 / 15:00

1 answer

2

In the figure the folder to be considered is software and in the code it is Video but this does not matter, I will consider it to be in the folder Video

  

Assuming the value of the variable $nome_arquivo is imagem1.jpg

We know that the value of $caminho is /public_html/Video

By concatenating the two variables, to give this value the variable $destino we get /public_html/Videoimagem1.jpg

which explains why you are being saved at the root.

Porting the solution is given in @LeoCaracciolo's comment

$ path = /public_html/Video/

being so; $destino=/public_html/Video/imagem1.jpg

    
01.11.2018 / 23:25