Вот наполовину запеченное решение в файле маршрута.Надеюсь, поможет.https://flysystem.thephpleague.com/docs/adapter/zip-archive/
composer require league/flysystem-ziparchive
Я поместил это в routs / web.php, чтобы поиграть.
<?php
use Illuminate\Support\Facades\Storage;
use League\Flysystem\Filesystem;
use League\Flysystem\ZipArchive\ZipArchiveAdapter;
Route::get('zip', function(){
// see laravel's config/filesystem.php for the source disk
$source_disk = 's3';
$source_path = '';
$file_names = Storage::disk($source_disk)->files($source_path);
$zip = new Filesystem(new ZipArchiveAdapter(public_path('archive.zip')));
foreach($file_names as $file_name){
$file_content = Storage::disk($source_disk)->get($file_name);
$zip->put($file_name, $file_content);
}
$zip->getAdapter()->getArchive()->close();
return redirect('archive.zip');
});
Вы определенно захотите сделать что-то иное, чем просто вставить это вобщедоступный реж.Может быть, скачать его прямо как загрузку или сохранить где-нибудь лучше.Не стесняйтесь оставлять комментарии / вопросы, и мы можем обсудить.