Загрузка файлов в Amazon S3 с помощью AWS PHP SDK
Вы хотите программно загружать файлы в Amazon S3? Amazon S3 – это облачная служба хранения, в которой можно хранить файлы, изображения и т.д. Эти документы могут быть общедоступными или частными в зависимости от выбора владельца. В этой статье мы изучаем, как загружать файлы в Amazon S3 с помощью официальной библиотеки AWS PHP SDK.
Amazon S3 предоставляет масштабируемое объектное хранилище. Благодаря своей надежности и производительности это популярный среди пользователей облачный сервис.
Зачем нужно загружать файлы на Amazon S3?
Что ж, есть несколько причин хранить ваши файлы на Amazon S3. Поскольку это облачный сервис, вы можете получить доступ к своим файлам из любого места. Используя эту услугу, пользователи могут сохранять конфиденциальность своих документов. AWS предоставляет вам возможность сохранить ваш документ как общедоступным, так и частным. Во-вторых, если у вас есть веб-сайт, то хранение файлов в облаке сэкономит вам много трафика. Это экономит место на вашем хостинге и снижает нагрузку на ваш сервер.
При этом давайте посмотрим, как загружать файлы на Amazon S3 с помощью PHP.
Получите свои учетные данные
Чтобы начать работу с S3, у вас должна быть учетная запись на AWS. После создания учетной записи AWS обязательно активируйте сервис S3, выполнив процесс проверки.
После активации службы S3 получите учетные данные безопасности, которые нам понадобятся при работе с API.
Код для загрузки файлов в Amazon S3
Мы готовы с ключами API AWS. Затем установите в свой проект официальную библиотеку AWS PHP SDK. Я рекомендую использовать Composer для установки этой библиотеки. Откройте терминал в корневом каталоге вашего проекта и выполните следующую команду.
composer require aws/aws-sdk-php
Эта команда установит библиотеки вместе с их зависимостями в ваш проект.
Создайте корзину на AWS
В AWS нам нужно создать Bucket для хранения наших файлов. Корзина – это не что иное, как логическая единица хранения в AWS. Все ваши файлы будут храниться в корзине.
Вы можете создать корзину непосредственно на панели инструментов S3. Но если кто-то хочет создать его динамически, обратитесь к приведенному ниже коду.
create-bucket.php
<?php
require 'vendor/autoload.php';
use AwsS3S3Client;
$bucketName = 'YOUR_BUCKET_NAME';
$client = new S3Client([
'version' => 'latest',
'region' => 'YOUR_AWS_REGION',
'credentials' => [
'key' => 'ACCESS_KEY_ID',
'secret' => 'SECRET_ACCESS_KEY'
]
]);
try {
$result = $client->createBucket([
'Bucket' => $bucketName, // REQUIRED
'ACL' => 'public-read',
]);
echo "Bucket created successfully.";
} catch (AwsS3ExceptionS3Exception $e) {
// output error message if fails
echo $e->getMessage();
}
Обязательно замените заполнители фактическими значениями. Этот код создает корзину на панели инструментов S3. Мы будем загружать файлы из этого ведра через API.
В приведенном выше коде я передал пару ключ => значение как 'ACL' => 'public-read'
. Эта пара устанавливает общий доступ к вашей корзине или файлам. Если вы хотите, чтобы ваше хранилище было приватным, удалите эту строку из кода.
Следующая работа – написание кода для загрузки файлов на Amazon S3. Ради учебника я создаю разные файлы PHP и пишу в них код. В вашем случае не стесняйтесь реализовывать логику в зависимости от потока вашего проекта.
Upload File to Amazon S3
Вы готовы с ведром для хранения файлов. Создайте файл upload-to-s3.php
и поместите в него приведенный ниже код.
загрузить-в-s3.php
<?php
require 'vendor/autoload.php';
use AwsS3S3Client;
// Instantiate an Amazon S3 client.
$s3 = new S3Client([
'version' => 'latest',
'region' => 'YOUR_AWS_REGION',
'credentials' => [
'key' => 'ACCESS_KEY_ID',
'secret' => 'SECRET_ACCESS_KEY'
]
]);
$bucketName = 'YOUR_BUCKET_NAME';
$file_Path = __DIR__. '/my-image.png';
$key = basename($file_Path);
// Upload a publicly accessible file. The file size and type are determined by the SDK.
try {
$result = $s3->putObject([
'Bucket' => $bucketName,
'Key' => $key,
'Body' => fopen($file_Path, 'r'),
'ACL' => 'public-read',
]);
echo "Image uploaded successfully. Image path is: ". $result->get('ObjectURL');
} catch (AwsS3ExceptionS3Exception $e) {
echo "There was an error uploading the file.n";
echo $e->getMessage();
}
Здесь вы должны присвоить $bucketName
переменной имя корзины. В моем случае я загружаю файл «my-image.png», путь к которому я указал в коде. Соответственно, вам следует скорректировать путь к вашим файлам. Наконец, я печатаю путь к загруженному файлу, используя get()
метод в полученном ответе.
Все сделано! Теперь запустите upload-to-s3.php
файл в браузере, и ваш файл должен быть загружен в корзину Amazon S3.
Надеюсь, вы понимаете, что такое создание корзины и загрузка файлов в Amazon S3. Вы также можете проверить примеры кодов, предоставленные AWS на GitHub.
Статьи по Теме
- Как загрузить файл на S3 с помощью файловой системы Laravel
- Как загрузить изображения на другой сервер через FTP в Laravel
- Как интегрировать API Google Таблиц с PHP