要使用AWS SDK PHP加载多个文件并创建一个zip文件,您可以使用ZipArchive类。以下是一个示例代码,演示如何实现这一点:
use Aws\S3\S3Client;
use \ZipArchive;
// 创建S3客户端
$s3Client = new S3Client([
'region' => 'us-west-2',
'version' => 'latest',
'credentials' => [
'key' => 'YOUR_AWS_ACCESS_KEY',
'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
],
]);
// 要下载的文件列表
$fileList = [
'bucket1/file1.txt',
'bucket2/file2.txt',
'bucket3/file3.txt',
];
// 创建一个临时文件来存储zip文件
$tempFile = tempnam(sys_get_temp_dir(), 'zip');
$zip = new ZipArchive;
$zip->open($tempFile, ZipArchive::CREATE);
// 遍历文件列表,从S3下载文件并将其添加到zip文件中
foreach ($fileList as $file) {
$temp = tempnam(sys_get_temp_dir(), 'download');
$s3Client->getObject([
'Bucket' => 'YOUR_S3_BUCKET',
'Key' => $file,
'SaveAs' => $temp,
]);
$zip->addFile($temp, basename($file));
}
// 关闭并保存zip文件
$zip->close();
// 提供zip文件下载
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="files.zip"');
header('Content-Length: ' . filesize($tempFile));
readfile($tempFile);
// 删除临时文件
unlink($tempFile);
请将示例代码中的YOUR_AWS_ACCESS_KEY,YOUR_AWS_SECRET_ACCESS_KEY和YOUR_S3_BUCKET替换为您自己的AWS访问凭证和S3存储桶名称。此代码将从指定的S3存储桶中下载文件,并将它们添加到一个zip文件中。最后,它将提供zip文件的下载。