Home>Snippets>Come salvare un’immagine remota sul proprio server con PHP

Come salvare un’immagine remota sul proprio server con PHP


Come salvare un'immagine remota sul proprio server con PHP

In prima battuta, starai pensando: “A cosa potrebbe servirmi scaricare un’immagine tramite PHP?”. Le risposte possono essere molteplici, si tratta di una pratica molto più diffusa di quanto tu creda, ma sicuramente uno dei motivi che vanno per la maggiore è lo scraping.
Immagina infatti di dover inserire le immagini ai centinaia di prodotti del tuo e-commerce, sarebbe impensabile farlo una per una!

Se invece tu avessi la lista delle URL delle immagini da associare, residenti su vari siti, ecco che questo snippet diventa più utile che mai!

  • Leggi l'articolo, ti bastano solo 2 minuti, 40 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!

Il codice

La prima cosa da fare, ovviamente, è prelevare l’immagine dal server su cui risiede. Per farlo è sufficiente avere a disposizione la URL completa dell’immagine ed utilizzare la funzione nativa PHP file_get_contents(). Ad esempio, volendo prelevare il logo di WordPress dal sito ufficiale:

<?php

// Preleva l'immagine dal server remoto
$url = 'https://s.w.org/about/images/logos/wordpress-logo-stacked-rgb.png';
$image = file_get_contents( $url );

Bene, ora che abbiamo “prelevato” il contenuto della URL, non ci resta che salvarlo sul nostro server, utilizzando la funzione opposta, file_put_contents():

<?php

// Scrive l'immagine sul proprio server
$path = '/logo_wp.png';
file_put_contents( $path, $image );

Ed il gioco è fatto! In pochissime righe, abbiamo effettuato il download dell’immagine remota e l’abbiamo salvata sul nostro server. Nell’esempio, abbiamo assegnato un nome arbitrario all’immagine salvata (logo_wp.png) e l’abbiamo posizionata nella root del nostro server, ma ovviamente, modificando il valore della variabile $path potrai assegnare il percorso ed il nome che preferisci.

Riassumendo, ecco il codice completo; crea un file .php (ad esempio: preleva_immagine.php) sul tuo server ed inserisci al suo interno:

<?php

// Preleva l'immagine dal server remoto
$url = 'https://s.w.org/about/images/logos/wordpress-logo-stacked-rgb.png';
$image = file_get_contents( $url );

// Scrive l'immagine sul proprio server
$path = '/logo_wp.png';
file_put_contents( $path, $image );

Ora richiama la URL del file, ad esempio:

https://www.tuodominio.com/preleva_immagine.php

e controlla nel tuo FTP: come per magia troverai il file logo_wp.png!

Ma non fermarti in superficie! Per approfondire l’argomento, ti consiglio di dare un’occhiata alla documentazione ufficiale della funzione file_get_contents():


ed alla documentazione della sua complementare, file_put_contents():




Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Eliminare l'immagine associata quando si elimina un articolo

Eliminare l’immagine associata quando si elimina un articolo


Evita di sprecare risorse, sia nello spazio FTP che nel database del tuo sito WordPress, cancellando automaticamente le immagini associate agli articoli eliminati.

Verificare se un utente è loggato in Magento

Verificare se un utente è loggato in Magento


Scopri come verificare se un utente è loggato oppure no, per modificare il comportamento di Magento e personalizzare il tuo e-commerce.

Oppure cerca tra gli articoli correlati


E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Privacy Policy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Privacy Policy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Privacy Policy)