Загрузка файлов в корзину 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-приложения.