@giovanny.lueilwitz
To download a folder from an S3 bucket in Laravel, you can use the ZipArchive class to create a zip file containing all the files in the folder, and then download the zip file.
Here's an example code snippet to download a folder from an S3 bucket in Laravel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
use Storage;
use ZipArchive;
public function downloadFolderFromS3($folderName)
{
// Specify the S3 bucket name
$bucket = 'your-s3-bucket-name';
// Create a temporary file to store the zip archive
$temporaryFilePath = tempnam(sys_get_temp_dir(), 'zip');
$zip = new ZipArchive;
$zip->open($temporaryFilePath, ZipArchive::CREATE);
// Get all the files in the folder
$files = Storage::disk('s3')->files($folderName);
// Add each file to the zip archive
foreach ($files as $file) {
$fileContent = Storage::disk('s3')->get($file);
$zip->addFromString(basename($file), $fileContent);
}
$zip->close();
// Download the zip archive
return response()->download($temporaryFilePath, 'folder.zip')->deleteFileAfterSend(true);
}
|
In this code snippet, replace 'your-s3-bucket-name' with the name of your S3 bucket, and call the downloadFolderFromS3($folderName) method passing the folder name as an argument to download the folder as a zip file.