Ladda upp filer till Amazon S3 med AWS PHP SDK
Vill du ladda upp filer till Amazon S3 programmatiskt? Amazon S3 är en molntjänst där man kan lagra filer, bilder etc. Dessa dokument kan vara offentliga eller privata beroende på ägarens val. I den här artikeln studerar vi hur man laddar upp filer till Amazon S3 med det officiella AWS PHP SDK-biblioteket.
Amazon S3 tillhandahåller hög skalbar objektlagring. På grund av dess robusthet och prestanda är det en populär molntjänst bland användarna.
Varför behöver du ladda upp filer på Amazon S3?
Det finns flera skäl att hålla dina filer på Amazon S3. Eftersom det är en molnbaserad tjänst kan du komma åt dina filer var som helst. När de använder den här tjänsten kan användare hålla sina dokument konfidentiella. AWS ger dig en funktion för att hålla ditt dokument offentligt eller privat. För det andra sparar du mycket bandbredd om du kör en webbplats så att du håller dina filer i molnet. Det sparar ditt värdutrymme och minskar belastningen på din server.
Med det sagt, låt oss ta en titt på hur man laddar upp filer på Amazon S3 med PHP.
Få dina säkerhetsuppgifter
För att komma igång med S3 bör du ha ett konto på AWS. När du har skapat AWS-kontot, se till att aktivera tjänsten S3 genom att följa deras verifieringsprocess.
När du aktiverar S3-tjänsten får du dina säkerhetsuppgifter som vi behöver när du arbetar med API: erna.
Kod för uppladdning av filer till Amazon S3
Vi är redo med AWS API-nycklar. Installera sedan ett officiellt AWS PHP SDK- bibliotek i ditt projekt. Jag rekommenderar att du använder Composer för att installera detta bibliotek. Öppna terminalen i din projektkatalog och kör kommandot nedan.
composer require aws/aws-sdk-php
Detta kommando installerar biblioteket med deras beroenden i ditt projekt.
Skapa en hink på AWS
I AWS måste vi skapa en Bucket för att lagra våra filer. Skopan är inget annat än en logisk lagringsenhet i AWS. Alla dina filer kommer att lagras i hinken.
Du kan skapa en hink direkt på S3-instrumentpanelen. Men om någon vill skapa det dynamiskt, se koden nedan.
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();
}
Se till att ersätta platshållarna med de faktiska värdena. Den här koden skapar en hink på din S3-instrumentpanel. Vi laddar upp filerna under denna hink via API: t.
I ovanstående kod skickade jag nyckeln => värdeparet som 'ACL' => 'public-read'
. Detta par anger din hink eller filåtkomst till allmänheten. Om du vill hålla din lagring privat tar du bort den här raden från koden.
Nästa jobb är att skriva kod för överföring av filer på Amazon S3. För handledningens skull skapar jag olika PHP-filer och skriver kod i den. I ditt fall är du välkommen att implementera logiken beroende på ditt projektflöde.
Ladda upp fil till Amazon S3
Du är redo med skopan för att lagra dina filer. Skapa en fil upload-to-s3.php
och placera koden nedan i den här filen.
ladda upp-till-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();
}
Här bör du tilldela skopnamnet för $bucketName
variabel. I mitt fall laddar jag upp en fil som säger ‘my-image.png’ vilken sökväg jag anger i koden. Följaktligen bör du justera sökvägen till dina filer. Slutligen skriver jag ut sökvägen för en uppladdad fil med hjälp av get()
metoden på det mottagna svaret.
Klart! Kör nu upload-to-s3.php
filen i webbläsaren och din fil ska laddas upp på Amazon S3-hink.
Jag hoppas att du förstår om att skapa en hink och ladda upp filer till Amazon S3. Du kanske också vill kontrollera exempelkoder som tillhandahålls av AWS på GitHub.
relaterade artiklar
- Hur laddar jag upp filen till S3 med Laravel Filesystem
- Hur man laddar upp bilder till en annan server via FTP i Laravel
- Hur man integrerar Google Sheets API med PHP