Como baixar várias imagens de URL “endereços” diferentes salvas em um arquivo “CSV” utilizando um script 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:
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 “curl” 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 php.ini
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 banco de dados ou até mesmo baixando todas as imagens encontradas em uma página na web.
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)
Ferramenta online 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”