[php] PHP에서 ZIP 파일을 생성한 후 클라우드 스토리지에 저장하기

클라우드 스토리지는 파일을 안전하게 저장하고 유지하는 데에 매우 유용한 도구입니다. PHP를 사용하여 파일을 ZIP으로 압축하고, 이를 클라우드 스토리지에 저장하는 방법을 알아보겠습니다.

1. ZIP 파일 생성

PHP에서 ZIP 파일을 생성하는 방법에는 여러 가지가 있지만, 가장 간단한 방법은 ZipArchive 클래스를 사용하는 것입니다. 아래는 간단한 예제 코드입니다.

<?php
$zip = new ZipArchive;
if ($zip->open('example.zip', ZipArchive::CREATE) === TRUE) {
  $zip->addFile('file.txt', 'file.txt');
  $zip->close();
  echo 'ZIP 파일이 생성되었습니다';
} else {
  echo 'ZIP 파일을 생성할 수 없습니다';
}
?>

이 코드는 file.txtexample.zip이라는 이름으로 압축하는 예제입니다.

2. 클라우드 스토리지에 파일 업로드

ZIP 파일을 생성한 후에는 이를 클라우드 스토리지로 업로드해야 합니다. 가장 보편적으로 사용되는 방법은 cURL을 사용하여 파일을 업로드하는 것입니다.

<?php
$ch = curl_init();
$file = 'example.zip';
$data = array('file' => '@' . realpath($file));
curl_setopt($ch, CURLOPT_URL, 'https://example.com/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
echo '파일이 업로드되었습니다';
?>

이 코드는 example.zip 파일을 https://example.com/upload.php로 업로드하는 예제입니다.

3. 클라우드 스토리지 연동 라이브러리 사용

또 다른 방법으로는 클라우드 스토리지 제공업체의 PHP 연동 라이브러리를 사용하는 것입니다. 가령, Amazon S3의 경우 aws/aws-sdk-php 라이브러리를 사용하여 파일을 업로드할 수 있습니다.

<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = 'my-bucket';
$file = 'example.zip';

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

try {
    $result = $s3->putObject([
        'Bucket' => $bucket,
        'Key'    => basename($file),
        'Body'   => fopen($file, 'r'),
        'ACL'    => 'public-read'
    ]);
    echo '파일이 업로드되었습니다';
} catch (S3Exception $e) {
    echo $e->getMessage();
}
?>

이 코드는 example.zip 파일을 Amazon S3 버킷에 업로드하는 예제입니다.

이제 여러분은 PHP를 사용하여 파일을 ZIP으로 압축한 후, 이를 클라우드 스토리지에 안전하게 저장하는 방법을 알게 되었습니다.

ZipArchive 클래스 - PHP 공식 문서 Amazon S3 PHP SDK - AWS 공식 문서