Kuidas laadida pilte Laraveli FTP kaudu teise serverisse
Kas soovite oma failid oma Laraveli rakendusest FTP kaudu teise serverisse üles laadida? Laraveli juurde kuulub sisseehitatud tugi failide üleslaadimiseks välisserverisse või pilve. Selles juhendis näitame teile, kuidas faile (pilte) Laraveli veebisaidil FTP kaudu teisele serverile üles laadida.
Piltide majutamine mõnes teises serveris aitab parandada saidi kiirust. See tehnika on omamoodi paralleelne ühendus veebibrauseri ja serverite vahel. See vähendab ühe serveri koormust, kuna piltide brauser helistab teisele serverile.
Laraveli failisüsteem pakub mugavat viisi meie failide haldamiseks pilves või välises serveris. Kasutaja saab valida erinevaid Laraveli salvestusepakkujaid nagu S3, Rackspace, FTP või SFTP. Vaatame Laraveli failide üleslaadimist FTP draiveri abil.
Laadige failid FTP-draiveri kaudu teise serverisse üles
Alustamiseks peaksite teadma oma FTP hosti üksikasju, FTP kasutajanime ja FTP parooli. Kui olete üksikasjad valmis, avage .env
failid ja lisage üksikasjad allpool:
FTP_HOST=YOUR_FTP_HOST_VALUE
FTP_USERNAME=YOUR_FTP_USERNAME_VALUE
FTP_PASSWORD=YOUR_FTP_PASSWORD_VALUE
Asendage kohatäited tegelike väärtustega. Järgmisena avage config/filesystems.php
fail ja lisage massiivi ‘kettad’ ‘ftp’ konfiguratsioon.
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
],
],
];
Asendage DIR_PATH_TO_WHERE_IMAGE_STORE tegeliku teega, kuhu peate pilte salvestama. Näiteks kui meil on kaust nimega "images" ja selle kausta tee on / var / www / html / dev / images, siis läheb see tee ülaltoodud massiivi "root" väärtuseks.
FTP kaudu failide üleslaadimiseks vajame vormi, kuhu kasutaja saab pildi esitada. Lisage allolev kood oma vaatefaili.
<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>
Peaksite PASS_ACTION_URL_HERE asendama oma tegeliku marsruudiga. Kuna kasutame failide üleslaadimiseks Laraveli salvestusruumi, peab kasutaja kontrolleri faili lisama Fassaadi järgmiselt:
use IlluminateSupportFacadesStorage;
Lõpuks oleks teie kontrolleri funktsioonikood järgmine:
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’ on meie failisisendi nimi. Ehitame oma faili ainulaadse nime ja laadime selle seejärel üles välisele serverile. Pange tähele, et oleme kasutanud meetodit Storage :: disk (‘ftp’). See funktsioon salvestaks meie faili konfiguratsioonis määratletud teele. Kasutaja peaks teie andmebaasi salvestama väärtuse ‘$ filenametostore’.
Pildi toomine või kustutamine
Tegeleme piltidega nii ilmselgelt, peame need pildid veebisaidil kuvama. Kuna me hoiame neid pilte teadaolevas välises serveris, peaks kasutaja teadma kausta, kuhu pilte salvestame, HTTP-teed. See võib olla midagi sellist nagu YOUR_DOMAIN_URL / images /. Kontrolleri meetodis peaksime pildi nime andmebaasi salvestama. Nii et meie HTML img-märgend on järgmine:
<img src="YOUR_DOMAIN_URL/images/FILE_NAME" />
Siin on FILE_NAME teie pildi nimi, mis on andmebaasi salvestatud. Kasutaja saab faili kustutada järgmisel viisil:
Storage::disk('ftp')->delete('FILE_NAME');