Подробное руководство: загрузка файлов в определенную папку в корзине S3 с помощью PHP

Загрузка файлов в корзину Amazon S3 — обычная задача во многих веб-приложениях. В этом уроке мы рассмотрим различные методы загрузки файлов в определенную папку в корзине S3 с помощью PHP. Мы предоставим примеры кода для каждого метода, чтобы помочь вам легко интегрировать загрузку файлов в ваши PHP-приложения.

Метод 1. Использование AWS SDK для PHP (версия 3)
AWS SDK для PHP обеспечивает удобный способ взаимодействия с Amazon S3. Прежде чем приступить к следующему примеру кода, убедитесь, что у вас установлен AWS SDK для PHP:

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
// Define your AWS credentials
$credentials = [
    'key' => 'YOUR_AWS_KEY',
    'secret' => 'YOUR_AWS_SECRET',
    'region' => 'YOUR_AWS_REGION',
];
// Create an S3 client
$s3 = new S3Client($credentials);
// Specify the bucket name and folder path
$bucketName = 'your-bucket-name';
$folderPath = 'your-folder-path/';
// Specify the file path and name
$filePath = '/path/to/your/file.txt';
$fileName = 'file.txt';
try {
    // Upload the file to the specified folder
    $s3->putObject([
        'Bucket' => $bucketName,
        'Key' => $folderPath . $fileName,
        'SourceFile' => $filePath,
    ]);
    echo "File uploaded successfully!";
} catch (S3Exception $e) {
    echo "Error uploading the file: " . $e->getMessage();
}

Метод 2. Использование AWS SDK для PHP (версия 2)
Если вы используете более старую версию AWS SDK для PHP, вы можете добиться того же результата с помощью следующего кода:

require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
// Define your AWS credentials
$credentials = [
    'key' => 'YOUR_AWS_KEY',
    'secret' => 'YOUR_AWS_SECRET',
];
// Create an S3 client
$s3 = S3Client::factory([
    'credentials' => $credentials,
]);
// Specify the bucket name and folder path
$bucketName = 'your-bucket-name';
$folderPath = 'your-folder-path/';
// Specify the file path and name
$filePath = '/path/to/your/file.txt';
$fileName = 'file.txt';
try {
    // Upload the file to the specified folder
    $s3->putObject([
        'Bucket' => $bucketName,
        'Key' => $folderPath . $fileName,
        'SourceFile' => $filePath,
    ]);
    echo "File uploaded successfully!";
} catch (S3Exception $e) {
    echo "Error uploading the file: " . $e->getMessage();
}

Метод 3. Использование API REST AWS S3
Если вы предпочитаете более ручной подход, вы можете использовать встроенные функции HTTP PHP для взаимодействия с API REST AWS S3. Вот пример:

// Define your AWS credentials
$accessKey = 'YOUR_AWS_ACCESS_KEY';
$secretKey = 'YOUR_AWS_SECRET_KEY';
// Specify the bucket name and folder path
$bucketName = 'your-bucket-name';
$folderPath = 'your-folder-path/';
// Specify the file path and name
$filePath = '/path/to/your/file.txt';
$fileName = 'file.txt';
// Generate the AWS S3 signature
$date = gmdate('D, d M Y H:i:s T');
$signature = base64_encode(hash_hmac('sha1', "PUT\n\n\n$date\n/$bucketName/$folderPath$fileName", $secretKey, true));
// Construct the HTTP headers
$headers = [
    'Date: ' . $date,
    'Authorization: AWS ' . $accessKey . ':' . $signature,
];
// Send the file to the specified folder using PUT request
$ch = curl_init('https://' . $bucketName . '.s3.amazonaws.com/' . $folderPath . $fileName);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_INFILE, fopen($filePath, 'r'));
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filePath));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_exec($ch);
curl_close($ch);
echo "File uploaded successfully!";

В этой статье мы рассмотрели несколько способов загрузки файлов в определенную папку в корзине S3 с помощью PHP. Мы рассмотрели использование AWS SDK для PHP (версии 2 и 3), а также прямое взаимодействие с API REST AWS S3 для загрузки файлов. Каждый метод обеспечивает надежный способ достижения вашей цели, поэтому выберите тот, который лучше всего соответствует требованиям вашего приложения.

Не забудьте заменить заполнители (YOUR_AWS_KEY, YOUR_AWS_SECRET, YOUR_AWS_REGION, YOUR_AWS_ACCESS_KEY, YOUR_AWS_SECRET_KEY, имя вашего сегмента, путь к вашей папке) в примерах кода вашими фактическими учетными данными AWS и информацией о сегменте.

Следуя этим методам, вы можете легко включить загрузку файлов в определенные папки в корзине S3 в свои PHP-приложения.