PHP Básico

Baixar e salvar imagens de uma URL com PHP

Post ensinado a com Baixar e salvar imagens “fazer download” utilizando o PHP e salva-la em um diretório qualquer em seu servidor.

Primeira parte

$url = 'http://seusite.com.br/imagem.jpg';

$ch = curl_init($url);

$fp = fopen('diretorio/imagem.jpg', 'wb');

Altere a variável $url de acordo com a imagem que você deseja baixar.

Iremos utilizar cURL e a função fopen para baixar e salvar a imagem.

Na função fopen, altere o diretório e o nome da imagem.

Segunda parte

Segunda parte, definindo alguns parâmetros para curl e executando.

No final fechamos tanto o curl como fopen, que foi utilizado para salvar o arquivo.

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);

curl_close($ch);
fclose($fp);

Código completo utilizado:

$url = 'http://seusite.com.br/imagem.jpg';

$ch = curl_init($url);

$fp = fopen('diretorio/imagem.jpg', 'wb');

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);

Baixando imagens em sequência

Imagine que você tenha uma sequência de 10 imagens para baixar, exemplo:

http://seusite.com.br/imagem-1.jpg

http://seusite.com.br/imagem-2.jpg

http://seusite.com.br/imagem-3.jpg ..

Basta você colocar o código dentro de um FOR e utilizando a variável incremental na URL e nome do arquivo salvo, pronto, baixei centenas de imagens em um único comando.

for($i = 0; $i < 10; $i++){

 $url = "http://seusite.com.br/imagem-" . $i . ".jpg";

 $ch = curl_init($url);

 $fp = fopen('diretorio/imagem-'.$i.'.jpg', 'wb');

 curl_setopt($ch, CURLOPT_FILE, $fp);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_exec($ch);
 curl_close($ch);
 fclose($fp);

}

 

 

 

 

Ver comentários

  • Oi Roger, maravilha ele funciona perfeitamente e não pede permissões, muito bom!
    Mas eu ia te perguntar algo, pois estou enfrentando uma dificuldade de mais ou menos 25 mil imagens em url's diferentes, ou seja não no mesmo diretório mais e vários separadamente.
    Neste mesmo código há como baixar imagens de URL's diferentes?

  • Boa noite, muito bom seus códigos mas só funcionou o 1º baixando 1 a 1.
    O outro da erro na Syntax da variável $i.
    Pra que serve esta $i ?
    Ela não é setada em nenhum lugar antes? Ela pega alguma informação? De qual lugar?

    (y)

    • Olá Anderson, boa tarde. Código corrigido: Certo: $fp = fopen(‘diretorio/imagem-‘ . $i . ‘.jpg’, ‘wb’); Este código serve para baixar varias imagens sequências, exemplo image-01.jpg.. 02.jpg.. etc.. :)

Post Recentes

Bloquear .env e .git no nginx: as regras que ainda deixam o arquivo vazar

Negar /.env no nginx parece resolvido até alguém pedir /wp-content/uploads/.env ou backup.sql. As regras que testei e os furos que…

14 horas atrás

Canonical errado no Yoast: corrigindo pelo filtro wpseo_canonical

O Search Console marca suas páginas 2, 3 e 4 como alternativas da página 1? Ajuste a tag canônica do…

17 horas atrás

Layout XML do Magento 2: remover bloco de módulo de terceiro

Um módulo de terceiro plantou um banner no topo da loja e você não quer desinstalar nada: tire o bloco…

1 dia atrás

Restaurar dump do Magento 2 em outro servidor: trocar a base_url no SQL

Importou o banco de produção e o site pula para o domínio antigo? Rode o UPDATE em core_config_data, limpe o…

2 dias atrás

Criar exceção customizada em PHP: quando estender Exception compensa

Seu catch trata pedido inexistente e banco fora do ar do mesmo jeito. Veja como criar exceção customizada em PHP…

3 dias atrás

DataProvider Magento 2: form do admin abre com campos vazios ao editar

O form do admin salva mas abre em branco na edição: veja o getData() indexado pelo id da entidade e…

4 dias atrás