Prześlij pliki do Amazon S3 za pomocą AWS PHP SDK
Czy chcesz programowo przesyłać pliki do Amazon S3? Amazon S3 to usługa przechowywania w chmurze, w której można przechowywać pliki, obrazy itp. Dokumenty te mogą być publiczne lub prywatne, w zależności od wyboru właściciela. W tym artykule dowiemy się, jak przesyłać pliki do Amazon S3 za pomocą oficjalnej biblioteki AWS PHP SDK.
Amazon S3 zapewnia wysoce skalowalną obiektową pamięć masową. Ze względu na swoją solidność i wydajność jest popularną usługą w chmurze wśród użytkowników.
Dlaczego trzeba przesyłać pliki na Amazon S3?
Cóż, istnieje kilka powodów, dla których warto przechowywać swoje pliki w Amazon S3. Ponieważ jest to usługa oparta na chmurze, możesz uzyskać dostęp do swoich plików z dowolnego miejsca. Korzystając z tej usługi, użytkownicy mogą zachować poufność swoich dokumentów. AWS zapewnia funkcję, dzięki której Twój dokument będzie publiczny lub prywatny. Po drugie, jeśli prowadzisz witrynę internetową, przechowywanie plików w chmurze pozwoli Ci zaoszczędzić dużo przepustowości. Oszczędza miejsce na hostingu i zmniejsza obciążenie serwera.
Biorąc to pod uwagę, przyjrzyjmy się, jak przesyłać pliki na Amazon S3 za pomocą PHP.
Uzyskaj poświadczenia bezpieczeństwa
Aby rozpocząć korzystanie z S3, musisz mieć konto w AWS. Po utworzeniu konta AWS upewnij się, że aktywujesz usługę S3, postępując zgodnie z procesem ich weryfikacji.
Po aktywacji usługi S3 uzyskaj swoje dane uwierzytelniające, których będziemy potrzebować podczas pracy z API.
Kod do przesyłania plików do Amazon S3
Jesteśmy gotowi z kluczami AWS API. Następnie zainstaluj w swoim projekcie oficjalną bibliotekę AWS PHP SDK. Do zainstalowania tej biblioteki polecam użyć Composera. Otwórz terminal w katalogu głównym projektu i uruchom poniższe polecenie.
composer require aws/aws-sdk-php
To polecenie zainstaluje bibliotekę z jej zależnościami w twoim projekcie.
Utwórz zasobnik w AWS
W AWS musimy stworzyć Bucket do przechowywania naszych plików. Wiadro to nic innego jak logiczna jednostka pamięci w AWS. Wszystkie Twoje pliki będą przechowywane w zasobniku.
Możesz utworzyć zasobnik bezpośrednio na pulpicie nawigacyjnym S3. Ale jeśli ktoś chce stworzyć go dynamicznie, zapoznaj się z poniższym kodem.
tworzenie-zasobnik.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();
}
Pamiętaj, aby zastąpić symbole zastępcze rzeczywistymi wartościami. Ten kod tworzy zasobnik na pulpicie nawigacyjnym S3. Prześlemy pliki z tego zasobnika za pośrednictwem interfejsu API.
W powyższym kodzie przekazałem parę klucz=>wartość jako 'ACL' => 'public-read'
. Ta para zapewnia publiczny dostęp do Twojego zasobnika lub plików. Jeśli chcesz zachować prywatność swojej przestrzeni dyskowej, usuń tę linię z kodu.
Następnym zadaniem jest napisanie kodu do przesyłania plików na Amazon S3. Na potrzeby tutoriala tworzę różne pliki PHP i piszę w nich kod. W Twoim przypadku możesz zaimplementować logikę w zależności od przepływu projektu.
Prześlij plik do Amazon S3
Jesteś gotowy z kubełkiem do przechowywania plików. Utwórz plik upload-to-s3.php
i umieść w nim poniższy kod.
prześlij-do-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();
}
Tutaj należy przypisać nazwę zasobnika $bucketName
zmiennej. W moim przypadku przesyłam plik, który mówi „my-image.png", którą ścieżkę ustawiłem w kodzie. W związku z tym powinieneś dostosować ścieżkę swoich plików. Na koniec drukuję ścieżkę przesłanego pliku przy użyciu get()
metody na otrzymanej odpowiedzi.
Wszystko gotowe! Teraz uruchom upload-to-s3.php
plik w przeglądarce, a Twój plik powinien zostać przesłany do zasobnika Amazon S3.
Mam nadzieję, że rozumiesz tworzenie zasobnika i przesyłanie plików do Amazon S3. Możesz również sprawdzić przykładowe kody dostarczone przez AWS w serwisie GitHub.
Powiązane artykuły
- Jak przesłać plik do S3 za pomocą systemu plików Laravel?
- Jak przesłać obrazy na inny serwer przez FTP w Laravel?
- Jak zintegrować API Arkuszy Google z PHP