File: /var/www/ipsremont-demo/app/Console/Commands/ImportImages.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;
use Symfony\Component\Console\Command\Command as CommandAlias;
class ImportImages extends Command
{
protected $signature = 'import:images';
public function handle(): int
{
$verbose = !empty($this->option('verbose'));
$ftp = Storage::disk('ftp');
$files = $ftp->files();
$files = array_filter($files, fn($file) => preg_match('/[0-9+]+\.png/', $file));
$count = count($files);
$this->info('Найдено файлов: ' . $count);
if ($verbose) {
$progressBar = $this->output->createProgressBar($count);
$progressBar->start();
}
foreach ($files as $file) {
if ($verbose) {
$progressBar->advance();
}
if (!file_exists(public_path('demo-images'))) {
mkdir(public_path('demo-images'));
}
$localFilePath = public_path('demo-images/') . $file;
// Для быстрого синка можно включить
// if (file_exists($localFilePath)) {
// if (filesize($localFilePath) == $ftp->size($file)) {
// }
// continue;
// }
file_put_contents($localFilePath, $ftp->get($file));
}
if ($verbose) {
$progressBar->finish();
$this->line('');
}
return CommandAlias::SUCCESS;
}
}