Informazioni

  • Copyright © 2021 Gabriele Romanato
  • Codice fiscale: RMNGRL78L20A485X
  • Privacy Policy

Come scaricare un file da un sito remoto in locale con PHP

Scaricare un file remoto in locale è un'operazione relativamente semplice in PHP.

Possiamo creare la seguente classe:


class My_Getter {

  public $url;
  public $fileName;

  public function __construct($uri, $name) {
      $this->url = $uri;
      $this->fileName = $name;
  }

  private function getFile() {
    $output = '';
    if(filter_var($this->url, FILTER_VALIDATE_URL)) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 0);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $data = curl_exec($ch);
        $curl_errno = curl_errno($ch);

        if ($curl_errno > 0) {
            $output = null;
        } else {
            $output = $data;
        }
    } else {
        $output = null;
    }

    return $output;
  }

  public function save() {
    $data = $this->getFile();
    $result = true;
    if(!is_null($data)) {
      file_put_contents($this->fileName, $data);
    } else {
      $result = false;
    }
    return $result;
  }
}

Esempio d'uso:


$myGetter = new My_Getter('https://domain.tld/file.txt', 'local-file.txt');

if($myGetter->save()) {
    //...
}

Precedente Simulare una latenza nelle richieste AJAX durante lo sviluppo Simulare una latenza nelle richieste AJAX durante lo sviluppo
Perché bisognerebbe sempre diffidare dell'array superglobale $_SERVER in PHP Successivo Perché bisognerebbe sempre diffidare dell'array superglobale $_SERVER in PHP