[php] PHP에서 ZIP 파일을 생성한 후 AWS S3로 업로드하기

PHP를 사용하여 디렉토리나 파일들을 압축한 후 AWS S3로 업로드하는 방법을 알아보겠습니다.

1. ZipArchive 클래스로 ZIP 파일 생성하기

$zip = new ZipArchive;
$zipFileName = 'example.zip';
if ($zip->open($zipFileName, ZipArchive::CREATE) === TRUE) {
    // 디렉토리나 파일들을 추가
    $zip->addFile('file1.txt', 'file1.txt');
    $zip->addFile('file2.txt', 'file2.txt');
    // 디렉토리 추가
    $zip->addEmptyDir('dirname');
    $zip->addFile('dirname/file3.txt', 'dirname/file3.txt');
    $zip->close();
    echo 'ZIP 파일 생성 완료';
} else {
    echo 'ZIP 파일 생성 실패';
}

2. AWS SDK를 사용하여 S3로 파일 업로드하기

AWS SDK를 사용하여 압축된 ZIP 파일을 S3로 업로드합니다. 먼저 AWS PHP SDK를 설치해야 합니다.

composer require aws/aws-sdk-php

그런 다음, 다음과 같이 코드를 작성하여 S3로 파일을 업로드합니다.

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = 'example-bucket';
$keyName = 'example.zip';
$pathToFile = 'example.zip';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-west-2'
]);

try {
    // 파일 S3에 업로드
    $result = $s3->putObject([
        'Bucket' => $bucket,
        'Key'    => $keyName,
        'SourceFile' => $pathToFile,
    ]);
    echo '파일이 성공적으로 업로드되었습니다.';
} catch (S3Exception $e) {
    echo '파일을 업로드하는 도중 오류가 발생했습니다: ' . $e->getMessage();
}

이제 PHP로 ZIP 파일을 생성하고 AWS S3로 업로드하는 방법을 알게 되었습니다. 코드를 살펴 보고 실제 프로젝트에 적용해 보세요.

참고 자료