Загрузить файл ZipArchive в AWS S3 без сохранения в каталоге - PullRequest
0 голосов
/ 05 марта 2020

Мой сценарий принимает файлы, которые были переданы в функцию, и объединяет / сохраняет их как сжатый файл с использованием 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);

1 Ответ

0 голосов
/ 05 марта 2020

Да, вы можете передавать данные из памяти на объект S3. Вам не нужно загружать файл с диска.

Взгляните на S3 Stream Wrapper как один из вариантов.

...