Como baixar várias imagens listadas em um arquivo CSV – PHP

Como baixar várias de URL “endereços” diferentes salvas em um arquivo “CSV” utilizando um script .

Como baixar várias imagens listadas em um arquivo CSV - PHP

Primeiro, lendo o arquivo CSV

Crie um arquivo PHP com seguinte conteúdo.

Neste parte iremos ler, linha a linha do arquivo CSV que contém o endereço completo das imagens que desejamos baixar.

$csvFile = file('imagens.csv');

foreach ($csvFile as $line) {
   echo str_getcsv($line);
}

O código é bem simples, utilizando a função str_getcsv, iremos percorrer linha a linha do arquivo csv “imagens.csv” que está localizado no mesmo diretório de nosso script.

Observação:

As funções utilizadas acima são compatíveis com a versões do PHP >= 5.3.0

Script para baixar as imagens

Como referência irei utilizar este outro Post que aborda essa tema: Baixar e salvar imagens de uma URL com PHP

Mesclando o código acima utilizado na leitura do arquivo CSV com código utilizado para baixar uma imagem, temos:

$csvFile = file('imagens.csv');

foreach ($csvFile as $line) {
   
  $url = str_getcsv($line);
 
  $ch = curl_init($url[0]);

  $name = basename($url[0]);
 
  if (!file_exists('diretorio/' . $name)) {
    $fp = fopen('diretorio/' . $name, 'wb');
  }
 
  curl_setopt($ch, CURLOPT_FILE, $fp);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_exec($ch);
  curl_close($ch);
  fclose($fp);

}

Para baixar as imagens iremos utilizar a Biblioteca Client URL “” para “acessar” e “baixar” cada uma.

Já com a função “fopen” iremos salvar a imagem no diretório desejado, no exemplo “diretorio/”.

Outra função que estou utilizando antes de salvar a imagem é a “file_exists” que irá verificar se a imagem já foi salva antes, muito útil caso a execução do script seja interrompida.

Repare também na utilização da função “basename” para recuperar o nome da imagem que está na URL.

Tempo de execução

Caso você deseja realizar o download de uma grande quantidade de imagens você deverá aumentar o tempo de execução máxima que um script PHP pode ter, utilize a função:

ini_set('max_execution_time', 9999);

Você também pode realizar essa alteração no arquivo

max_execution_time = 9999

Os valores informados são em segundos.

Exemplo do arquivo CSV “imagens.csv”:

https://rogertakemiya.com.br/wp-content/uploads/2017/11/novas-atuaizacoes-para-o-magento-2-300x148.png,
https://rogertakemiya.com.br/wp-content/uploads/2017/11/sempre-melhorando-o-conteudo-seo-300x148.png,
https://rogertakemiya.com.br/wp-content/uploads/2017/11/dicas-de-design-parte-1-300x148.png

O arquivo CSV permite que de forma ordenada, linha a linha, separando as colunas por “,” listamos várias imagens em uma estrutura de fácil leitura pelo PHP.

O que é um arquivo CSV:

Comma-separated values (ou CSV) é um formato de arquivo que armazena dados tabelados, cujo grande uso data da época dos mainframes. Por serem bastante simples, arquivos .csv são comuns em todas as plataformas de computador.

O CSV é um implementação particular de arquivos de texto separados por um delimitador, que usa a vírgula e a quebra de linha para separar os valores.

O formato também usa as aspas em campos no qual são usados os caracteres reservados (vírgula e quebra de linha). Essa robustez no formato torna o CSV mais amplo que outros formatos digitais do mesmo segmento.

Conclusão de como baixar várias imagens

Você pode utilizar o modelo acima em diversas situações.

Interessante é que você adapte a sua necessidade, por exemplo, lendo uma tabela no ou até mesmo baixando todas as imagens encontradas em uma página na .

Qualquer dúvida, por favor, fique a vontade para fazer um comentário ou entrar em contato.

Links úteis

Código PHP para extrair as imagens de uma URL (website)

para baixar todas as imagens de um site: Como baixar todas imagens de um site – Ferramenta Online

3 comentários sobre “Como baixar várias imagens listadas em um arquivo CSV – PHP

  1. desculpem a duvida de principiante mas se eu precisar passar junto um CURLOPT_HTTPHEADER => array( “Authorization: Bearer $token”), como ficaria o código?
  2. Uauuuu! Parabéns Roger, fantástico, eu havia pensado em como ler as URL’s em serie, e olha já programo em PHP a algum tempo e não pensei em ler um “.CSV kkkk. Olha isso foi o máximo, me ajudou imensamente. Só relatando, funcionou no PHP 5.6.25. Como estou trabalhando com Magento, acabei encontrando um cliente que não tem as imagens dos produtos em repositório só link :( , e Roger, já pensou em transformar esta função em “Modulo” para o Magento…..? Pense… Muito feliz e grato pela sua ajuda, te recomendo mil vezes! Abraços

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *