php - 将 ZipArchive 文件上传到 AWS S3 而不保存到目录
问题描述
我的脚本获取已传递给函数的文件,并使用 ZipArchive 将它们组合/保存为压缩文件到我服务器上的目录中。
然后我将压缩文件上传到 AWS S3 存储桶,并从我的服务器上删除上传的文件。
但是,有没有办法将 ZipArchive 保存为变量或临时文件并将其直接上传到 AWS,而无需保存到我的服务器然后从我的服务器中删除?
$files = $_GET['json'];
$zipFolder = new ZipArchive;
$zipPath = "folder/compressedfile.zip";
if ($zipFolder->open($zipPath, ZipArchive::CREATE) === TRUE) {
foreach ($files as $file) {
$textString = $file['text'];
$zipFolder->addFromString($file['name'] . '.txt', $textString);
}
}
$zipFolder->close();
$s3Client = new S3Client([
'region' => '--region--',
'version' => 'latest',
'credentials' => [
'key' => '--key--',
'secret' => '--secret--',
],
]);
$bucketName = '--bucket--';
$result = $s3Client->putObject([
'Bucket' => $bucketName,
'Key' => 'compressedfile.zip',
'SourceFile' => $zipPath
]);
unlink($zipPath);
解决方案
是的,您可以将数据从内存流式传输到 S3 对象。您不必从磁盘上传文件。
将S3 Stream Wrapper视为一种选择。
推荐阅读
- wso2 - 无法通过 WSO2 EI 访问安全的后端服务
- python - unittest addTypeEqualityFunc() 的注册和范围
- javascript - 可以在脚本标签中使用 PHP 代码而不是 javascript 吗?
- android - 如何按id删除recyclerview项目?
- java - 如何获取只有选中项目的gridview列表?
- php - 使用 PHP 远程访问集群上的 MySQL
- python - 如何将 Python Pandas DataFrame 写入具有特定列类型格式的 .XLS 文件?
- php - NFC 标签打开的链接无法在 Android Chrome 上重定向
- javascript - 访问对象数组中信息的最佳实践。[.find() vs. .filter() vs. 创建引用对象]
- python - 查找大熊猫数据框的列发生变化的索引