[php] PHP 라이브러리 S3 파일 압축하여 업로드

이번에는 PHP를 사용하여 AWS S3에 파일을 업로드하기 전에 파일을 압축하는 방법에 대해 알아보겠습니다. 이를 통해 저장 공간을 절약하고 네트워크 대역폭을 효율적으로 사용할 수 있습니다.

1. 필요한 PHP 라이브러리 설치

먼저 AWS SDK for PHP를 사용하여 S3에 파일을 업로드할 것이므로, 해당 라이브러리를 설치해야 합니다. Composer를 사용하는 경우 아래 명령을 실행하여 필요한 라이브러리를 설치할 수 있습니다.

composer require aws/aws-sdk-php

2. 파일 압축 기능 추가

PHP에 내장된 ZipArchive 클래스를 사용하여 파일을 압축할 수 있습니다. 다음은 간단한 예제 코드입니다.

$zip = new ZipArchive;
$zipFileName = 'compressed.zip';
if ($zip->open($zipFileName, ZipArchive::OVERWRITE | ZipArchive::CREATE) === TRUE) {
    $files = ['file1.txt', 'file2.txt', 'file3.txt']; // 압축할 파일 리스트
    foreach ($files as $file) {
        $zip->addFile($file);
    }
    $zip->close();
}

3. S3로 파일 업로드

S3Client 클래스를 사용하여 파일을 S3에 업로드할 수 있습니다. 다음은 간단한 예제 코드입니다.

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

// S3 연결 설정
$s3 = new S3Client([
    'version'     => 'latest',
    'region'      => 'your-region',
    'credentials' => [
        'key'    => 'your-key',
        'secret' => 'your-secret'
    ]
]);

// 압축 파일 S3에 업로드
try {
    $result = $s3->putObject([
        'Bucket' => 'your-bucket',
        'Key'    => 'path/to/compressed.zip',
        'Body'   => fopen($zipFileName, 'rb'),
        'ACL'    => 'public-read'
    ]);
    echo "파일이 성공적으로 업로드되었습니다.";
} catch (AwsException $e) {
    echo $e->getMessage();
}

위 예제 코드에서 ‘your-region’, ‘your-key’, ‘your-secret’, ‘your-bucket’와 같이 개별 AWS 계정 및 S3 버킷에 맞게 설정해야 합니다.

이제 PHP를 사용하여 파일을 압축하여 AWS S3에 업로드하는 방법에 대해 이해하셨을 것입니다. 이를 통해 파일 관리 및 저장 공간 활용을 최적화할 수 있습니다.

참고 자료