Uploader un fichier local sur un FTP avec Laravel

Posté le March 8, 2018

Aujourd'hui, j'ai du réaliser une fonctionnalité un peu particulière: uploader un fichier généré par mon application sur le FTP d'un client.

N'ayant jamais fait ça avant avec Laravel, j'ai d'abord pensé que cela allait être un peu tendu.

Heureusement, Laravel m'a encore sauvé ! Je n'ai eu qu'à configurer un disque avec le driver ftp dans ma config:

// config/filesystems.php

return [
    ...
		
    'disks' => [

        'custom-ftp' => [
				
            'driver' => 'ftp',
						
            'host' => 'ftp.example.com',
						
            'username' => 'myusername',
						
            'password' => 'mypassword',

            // Optional FTP Settings...
            // 'port'     => 21,
            // 'root' => '/Example',
            // 'passive'  => true,
            // 'ssl'      => true,
            // 'timeout'  => 30,
        ],
    ],

];

Ensuite, là où je veux réaliser mon upload:

use File;
use Illuminate\Support\Facades\Storage;

$localFile = File::get('path/to/local-file.ext');

Storage::disk('custom-ftp')->put('path/to/distant-file.ext', $localFile);

Et c'est bon ! J'ai déjà dit que j'aimais Laravel ?