Hur man laddar upp bilder till en annan server via FTP i Laravel
Vill du ladda upp dina filer från din Laravel-applikation till en annan server via FTP? Laravel kommer med det inbyggda stödet för att ladda upp filer till extern server eller moln. I den här guiden visar vi dig hur du laddar upp filer (bilder) till en annan server via FTP på Laravels webbplats.
Att vara värd för bilder på en annan server kan hjälpa till att förbättra din webbplatshastighet. Denna teknik är typ av parallellkoppling mellan en webbläsare och servrarna. Det minskar belastningen från en server eftersom för webbläsare ger ett samtal till en annan server.
Laravel Filesystem ger ett bekvämt sätt att hantera våra filer på molnet eller den externa servern. Användaren kan välja olika Laravel-lagringsleverantörer som S3, Rackspace, FTP eller SFTP. Låt oss ta en titt på Laravel-filöverföring med FTP-drivrutin.
Ladda upp filer till en annan server via FTP-drivrutin
För att komma igång bör du känna till detaljerna för din FTP-värd, FTP-användarnamn och FTP-lösenord. En gång är du redo att öppna .env
filerna och lägga till informationen enligt nedan:
FTP_HOST=YOUR_FTP_HOST_VALUE
FTP_USERNAME=YOUR_FTP_USERNAME_VALUE
FTP_PASSWORD=YOUR_FTP_PASSWORD_VALUE
Se till att ersätta platshållarna med de faktiska värdena. Öppna sedan config/filesystems.php
filen och lägg till ‘ftp’ -konfigurationen i ‘disks’ array.
config / filesystems.php
<?php
return [
......
'disks' => [
......
'ftp' => [
'driver' => 'ftp',
'host' => env('FTP_HOST'),
'username' => env('FTP_USERNAME'),
'password' => env('FTP_PASSWORD'),
'root' => 'DIR_PATH_TO_WHERE_IMAGE_STORE' // for example: /var/www/html/dev/images
],
],
];
Ersätt DIR_PATH_TO_WHERE_IMAGE_STORE med den aktuella sökvägen där du behöver lagra bilder. Till exempel, om vi har en mapp som heter ‘images’ och sökvägen till den här mappen är / var / www / html / dev / images så kommer denna sökväg att gå som värdet för ‘root’ i ovanstående array.
För att ladda upp filer via FTP behöver vi ett formulär där en användare kan skicka bilden. Lägg till koden nedan i din vyfil.
<form action="{{ url('PASS_ACTION_URL_HERE') }}" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="exampleInputFile">File input</label>
<input type="file" name="profile_image" id="exampleInputFile" multiple />
</div>
{{ csrf_field() }}
<button type="submit" class="btn btn-default">Submit</button>
</form>
Du bör ersätta PASS_ACTION_URL_HERE med din faktiska rutt. Eftersom vi använder en Laravel Storage för filöverföring måste användaren lägga till fasad i kontrollfilen enligt följande:
use IlluminateSupportFacadesStorage;
Slutligen skulle din kontrollerfunktionskod vara som nedan:
public function store(Request $request)
{
if($request->hasFile('profile_image')) {
//get filename with extension
$filenamewithextension = $request->file('profile_image')->getClientOriginalName();
//get filename without extension
$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
//get file extension
$extension = $request->file('profile_image')->getClientOriginalExtension();
//filename to store
$filenametostore = $filename.'_'.uniqid().'.'.$extension;
//Upload File to external server
Storage::disk('ftp')->put($filenametostore, fopen($request->file('profile_image'), 'r+'));
//Store $filenametostore in the database
}
return redirect('images')->with('status', "Image uploaded successfully.");
}
‘profile_image’ är namnet på vår filinmatning. Vi bygger det unika namnet på vår fil och laddar sedan upp den till en extern server. Observera att vi har använt Storage :: disk (‘ftp’) -metoden. Den här funktionen lagrar vår fil till sökvägen enligt definitionen i konfigurationen. En användare bör lagra värdet ‘$ filenametostore’ i din databas.
Hämta eller ta bort bild
Vi har att göra med bilderna så uppenbart att vi måste visa dessa bilder på webbplatsen. När vi lagrar dessa bilder på den kända externa servern så ska en användare känna till HTTP-sökvägen till den mapp där vi lagrar bilderna. Det kan vara ungefär YOUR_DOMAIN_URL / bilder /. I controller-metoden ska vi lagra namnet på bilden i databasen. Så vår HTML img-tagg kommer att följa:
<img src="YOUR_DOMAIN_URL/images/FILE_NAME" />
Här är FILE_NAME ditt bildnamn som lagras i databasen. Användaren kan ta bort filen på följande sätt:
Storage::disk('ftp')->delete('FILE_NAME');
relaterade artiklar
- Hur laddar jag upp filen till S3 med Laravel Filesystem
- Ladda upp filer till Amazon S3 med AWS PHP SDK