Trazer imagens do FTP pelo botão PHP [RESOLVIDO]

Gente, estou tentando exibir a partir da ação de um botão php do meu formulário uma imagem. Está sendo pego o campo Código da consulta pois é o que dá nome a imagem no ftp (Ex.: 12345.jpg) e aí eu busco ela assim! Esse botão está no formulário dessa consulta.

Porém quando tento baixar do ftp para uma pasta minha do scriptcase, ela não vem. Testei criar via php mesmo um arquivo .txt simples para ver se não era essa pasta e realmente não é pois o arquivo foi criado perfeitamente.

Observem meu código php, camuflei as credenciais obviamente mas elas estão ok. Tentei deixar tudo comentado para melhorar a leitura.

´´´
// 1. Obter o código do produto da consulta
$codigo_produto = {Código}; // {Código} é o campo vindo da consulta

// 2. Configuração do servidor FTP
$ftp_server = “ftp.exemplo.com”; // Endereço do servidor FTP
$ftp_username = “usuario”; // Nome de usuário do FTP
$ftp_password = “senha”; // Senha do FTP
$ftp_dir = “public_ftp/EXEMPLO/Img/MinhaPasta”; // Caminho da pasta no FTP onde as imagens estão

// 3. Caminho local onde a imagem será salva (diretório público acessível via HTTP no Scriptcase)
$local_dir = “…/_lib/imagemsalva/”; // Caminho para o diretório público do Scriptcase
$imagem_nome = $codigo_produto . “.jpg”; // Nome da imagem baseado no código

// 4. Conectar ao servidor FTP
$conn_id = ftp_connect($ftp_server) or die(“Não foi possível conectar ao servidor FTP.”);

// 5. Realizar o login no servidor FTP
$login_result = ftp_login($conn_id, $ftp_username, $ftp_password);

// 6. Verificar se a conexão foi bem-sucedida
if ((!$conn_id) || (!$login_result)) {
echo “Falha na conexão ou login no FTP!”;
exit;
} else {
echo “Conexão e login bem-sucedidos!
”;

// 7. Alterar para o diretório correto no FTP
if (!ftp_chdir($conn_id, $ftp_dir)) {
    echo "Falha ao acessar o diretório: " . $ftp_dir;
    ftp_close($conn_id);
    exit;
}

// 8. Verificar se a imagem existe no FTP
$imagem_tamanho = ftp_size($conn_id, $imagem_nome);

if ($imagem_tamanho == -1) {
echo “Imagem não encontrada!”;
} else {
// Se o arquivo existe, fazer o download da imagem para o diretório local
$local_path = $local_dir . $imagem_nome;

echo "Iniciando download da imagem: $imagem_nome<br>";

// Tentar baixar a imagem para o diretório local acessível
if (ftp_get($conn_id, $local_path, $imagem_nome, FTP_BINARY)) {
    echo "Imagem baixada com sucesso!<br>";

    // Exibir a imagem com o caminho local
    echo "<br><img src='" . $local_dir . $imagem_nome . "' alt='Imagem do Produto' width='600' height='600' />";
} else {
    // Adicionar mais detalhes sobre o erro
    $error_message = error_get_last();
    echo "Falha ao baixar a imagem! Detalhes do erro: " . $error_message['message'] . "<br>";
    echo "Caminho local de salvamento: " . $local_path . "<br>";
}

}

// 9. Fechar a conexão FTP
ftp_close($conn_id);

}
´´´

consegue acesso ao ftp com esses dados através de um app cliente ftp? (winSCP, por exemplo)?

Eu uso o FileZilla, Haroldo

tranquilo em usar o filezilla, mas fez a conexão e acesso caindo na pasta onde esta a imagem?

Sim, entrei na pasta lá pelo filezilla e copiei o endereço remoto e coloquei na var. Ex.: $ftp_dir = “/public_ftp/EXEMPLO/Img/imagensquequero”. A conexão está dando como bem sucedida dessa forma.

porque não utiliza a global que aponta para o local de arquivos de documentos ou imagens em vez de usar engessado o caminho: $local_dir = “…/_lib/imagemsalva/”; ??

e esses 3 pontos antes aí? o que eles significam? conheço 1 ponto (pasta corrente) 2 pontos (pasta pai).

1 Curtida

São só dois pontos, tinham saído 3 ali sem querer, tentei ir diretamente com o caminho e também não resolveu, acredito que falte algo antes disso mas ainda não encontrei o que pode ser.