
Como baixar várias imagens de URL “endereços” diferentes salvas em um arquivo “CSV” utilizando um script PHP.
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
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.
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.
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.
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.
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.
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
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…
O Search Console marca suas páginas 2, 3 e 4 como alternativas da página 1? Ajuste a tag canônica do…
Um módulo de terceiro plantou um banner no topo da loja e você não quer desinstalar nada: tire o bloco…
Importou o banco de produção e o site pula para o domínio antigo? Rode o UPDATE em core_config_data, limpe o…
Seu catch trata pedido inexistente e banco fora do ar do mesmo jeito. Veja como criar exceção customizada em PHP…
O form do admin salva mas abre em branco na edição: veja o getData() indexado pelo id da entidade e…
Ver comentários
desculpem a duvida de principiante mas se eu precisar passar junto um CURLOPT_HTTPHEADER => array( "Authorization: Bearer $token"),
como ficaria o código?
Você pode fazer desta forma Claudio:
curl_setopt($ch, CURLOPT_HEADER, array( “Authorization: Bearer $token”));
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