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!
php laravel composer ftp flysystem-ftp
Commentami!