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
Segurança: Atualizações frequentes geralmente incluem patches de segurança para corrigir vulnerabilidades identificadas. Ao manter o Magento atualizado, você reduz significativamente…
Como adicionar uma mensagem de Alerta ou Aviso do Admin do Magento 2 Injete o Magento\Framework\Message\ManagerInterface no construtor da sua…
Para exibir as mensagens adicionadas na classe Magento\Framework\Message\ManagerInterface em um arquivo .phtml, você pode usar o seguinte código: <?php $objectManager…
Para criar um script no Magento 2 que exporte as categorias para um arquivo XML com o nome da categoria,…
Para definir um vídeo MP4 como plano de fundo em um <div> usando HTML e CSS, você pode seguir estas…
Como desativar o "lastname" no Magento 2 e Adobe Commerce Desativando a obrigatoriedade do campo Execute a SQL abaixo diretamente…
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