Hur man överför filer till fjärrserver i PHP
Att lagra filer eller bilder på en extern server är ett vanligt beteende nuförtiden. Människor använder molnlagring som AWS, Azure, Google Cloud, Backblaze eller sin egen fjärrserver för att lagra filerna. I det scenariot lagrar användaren filer på en annan server och anropar dem via länken på deras applikationsserver. Fördelen med att göra detta är att det sparar bandbredd på en server vilket resulterar i bättre serverprestanda.
Tidigare, under arbetet med en klients projekt, följde vi den här tekniken för att lagra bilder på en fjärrserver. Vad klienten ville var att skicka bilder till sin egen externa server och ringa det från en applikation varhelst det behövs. I så fall behövde vi lagra fjärrbildsökvägen i databasen efter att ha laddat upp den till en fjärrserver.
I den här artikeln visar vi dig hur du överför filer till en fjärrserver i PHP via FTP. För den här handledningens skull använder vi bilder för uppladdning. Användaren kan välja vilken typ av fil som helst enligt deras krav.
Komma igång
För att gå vidare bör du ha din FTP-referens. Ett annat krav är kompositören. Se till att du har installerat Composer på ditt system. Du ska använda paketet Flysystem som kräver Composer för installation.
Öppna terminalen i din projektkatalog och kör kommandot nedan.
composer require league/flysystem
Skapa ett HTML-formulär med filinmatning och skicka-knappen vid installationen. Det här formuläret används för att bläddra i bilden och skicka den till servern.
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="image" /><br>
<input type="submit" name="submit" value="Submit">
</form>
Överför filer till fjärrservern
Du har installerat Flysystem-biblioteket och också skapat ett HTML-formulär. Nästa sak som behöver göras är att ta bilden från filinmatningen och skicka den till en fjärrserver. Din upload.php
kommer att innehålla koden nedan.
<?php
require_once "vendor/autoload.php";
use LeagueFlysystemFilesystem;
use LeagueFlysystemAdapterFtp as Adapter;
if(isset($_POST['submit'])) {
if(isset($_FILES['image']['name']) && !empty($_FILES['image']['name'])) {
try {
$filesystem = new Filesystem(new Adapter([
'host' => 'HOST_NAME_HERE',
'username' => 'USERNAME_HERE',
'password' => 'PASSWORD_HERE',
]));
$stream = fopen($_FILES['image']['tmp_name'], 'r+');
$filesystem->putStream('public_html/images/'.$_FILES['image']['name'], $stream);
if (is_resource($stream)) {
fclose($stream);
}
echo "Image uploaded on external server successfully.";
} catch(Exception $e) {
echo $e->getMessage();
}
}
}
Ersätt platshållarna med de faktiska värdena. Här lagrar vi bilder i public_html/images
katalogen. Du kan justera den här sökvägen enligt dina krav. I ovanstående kod ansluter Flysystem till din server via FTP, läser bildinnehållet och placerar bilden på den angivna sökvägen.
Vi hoppas att du fick veta hur du överför filer till fjärrservern i PHP. Med Flysystem kan du också överföra filer till AWS S3, Azure, Dropbox etc. Du kan lära dig mer om detta paket i deras officiella dokumentation.
relaterade artiklar
- Hur man laddar upp bilder till en annan server via FTP i Laravel
- Ladda upp filer till Amazon S3 med AWS PHP SDK