【问题标题】:Upload ZipArchive file to AWS S3 without Saving to Directory将 ZipArchive 文件上传到 AWS S3 而不保存到目录
【发布时间】:2020-03-05 15:55:30
【问题描述】:

我的脚本获取已传递给函数的文件,并使用 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);

【问题讨论】:

    标签: php amazon-web-services amazon-s3 zip ziparchive


    【解决方案1】:

    是的,您可以将数据从内存流式传输到 S3 对象。您不必从磁盘上传文件。

    看看S3 Stream Wrapper 作为一个选项。

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多