Download file da FTP con Laravel

Mattepuffo's logo
Download file da FTP con Laravel

Download file da FTP con Laravel

In pratica da Laravel devo connettermi ad un FTP, listare i files nella cartella, e scaricarli in una directory sul server.

Prima di tutto dobbiamo installare una libreria apposita.

Possiamo farlo con composer:

composer require league/flysystem-ftp

Poi dobbiamo impostare i drive sul file config/filesystems.php (vi riport sia l'FTP che la cartella locale dove scarico i files):

'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
            'throw' => false,
        ],

        'xml_download' => [
            'driver' => 'local',
            'root' => public_path() . '/xml_download',
            'url' => env('APP_URL') . '/public',
            'visibility' => 'public',
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL') . '/storage',
            'visibility' => 'public',
            'throw' => false,
        ],

        'ftp_esiti' => [
            'driver' => 'ftp',
            'host' => env('FTP_HOST', 'localhost'),
            'root' => '/FCOC/EsitoFCOC/Elaborati/',
            'username' => env('FTP_USER', 'root'),
            'password' => env('FTP_PWD', ''),
            'passive' => false,
            'ignorePassiveAddress' => true,
        ],
    ],

Le credenziali per l'FTP sono salvate nel file .env.

A questo punto nel mio controller ho questa funzione:

  public function downloadFromFtp() {
    $files = Storage::disk('ftp_esiti')->files();
    foreach ($files as $file) {
      Storage::disk("xml_download")->put($file, Storage::disk('ftp_esiti')->get($file));
    }
  }

Enjoy!


Condividi

Commentami!