✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Laraveli mitme pildi üleslaadimine ja suuruse muutmine

37

Peale selle ajaveebi juhin ma YouTube’i kanalit, kus jagan videoõpetusi. Hiljuti küsis üks YouTube’i kanali tellijatest Laravelis mitme pildi suuruse muutmise kohta. Nad tahavad mitme pildi suurust muuta ühe korraga. Selles artiklis uurime, kuidas Laravelis mitu pilti üles laadida ja suurust muuta.

Sekkumispilt on avatud lähtekoodiga teek, mis võimaldab meil piltidega manipuleerida. Kasutan seda teeki piltide suuruse muutmiseks.

Laraveli mitme pildi üleslaadimine ja suuruse muutmine

Alustamine

Meie eesmärgi saavutamiseks peate installima ja konfigureerima Intervention Image teegi Laraveli projekti. Avage terminal oma projekti juurkataloogis ja käivitage käsk:

composer require intervention/image

Kui teek on installitud, avage config/app.phpfail ja lisage sellele fassaadiga teenusepakkujad. Lisage selle paketi teenusepakkujad $providersmassiivi.

InterventionImageImageServiceProvider::class,

Lisage $aliasesmassiivile fassaad .

'Image' => InterventionImageFacadesImage::class,

Järgmiseks vajame kataloogi, kuhu salvestame oma üleslaaditud failid. Laraveli failisüsteem pakub failide salvestamiseks avaliku ketta. Avalik ketas sisaldab faile, millele on üldsusele juurdepääs. Üleslaaditud failid leiate storage/app/publickaustast. Et neid faile veebis, siis on vaja luua sümboolne link public/storage, et storage/app/public.

Looge sümboolne link käsuga:

php artisan storage:link

Selle käsu abil luuakse avalikku kataloogi salvestuskaust. Siia salvestame oma failid.

Laraveli piltide üleslaadimine ja suuruse muutmine

Serverisse failide üleslaadimiseks vajate vormi. Loome vormi, kus saate serverisse üles laadida mitu faili. Allpool on vormi näidiskood, mis läheb teie vaatefaili.

<form action="{{ url('ROUTE 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>

Vormis olen võtnud faili sisendnime nimega ‘profile_image []’, mis saadab serverisse hulga faile. Lisasin ka atribuudi „mitu”, mis võimaldab meil valida mitu faili. Asendage kohatäide ROUTE_URL tegeliku väärtusega.

Kuna peame pilte üles laadima ja nende suurust muutma, lisage kontrolleris kaks fassaadi järgmiselt.

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use Image; //Intervention Image
use IlluminateSupportFacadesStorage; //Laravel Filesystem
 
class ImageController extends Controller
{
 
}

Fassaadi lisamisega saate helistada sekkumispildi teegi suuruse muutmise funktsioonidele. Allolevas koodis laadin failid üles kahte kohta. Üks on originaalpilt. Teine asub pisipiltide kataloogi all. Esmalt laadime algse pildi pisipiltide kausta üles ja seejärel suurust muudame.

public function store(Request $request)
{
    if ($request->hasFile('profile_image')) {
 
        foreach($request->file('profile_image') as $file){
 
            //get filename with extension
            $filenamewithextension = $file->getClientOriginalName();
 
            //get filename without extension
            $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
 
            //get file extension
            $extension = $file->getClientOriginalExtension();
 
            //filename to store
            $filenametostore = $filename.'_'.uniqid().'.'.$extension;
 
            Storage::put('public/profile_images/'. $filenametostore, fopen($file, 'r+'));
            Storage::put('public/profile_images/thumbnail/'. $filenametostore, fopen($file, 'r+'));
 
            //Resize image here
            $thumbnailpath = public_path('storage/profile_images/thumbnail/'.$filenametostore);
            $img = Image::make($thumbnailpath)->resize(400, 150, function($constraint) {
                $constraint->aspectRatio();
            });
            $img->save($thumbnailpath);
        }
 
        return redirect('ROUTE_URL')->with('success', "Image uploaded successfully.");
    }
}

Siin muudame pildi suurust proportsionaalselt. Nii toimides säilitame kuvasuhte ja pilti ei lõigata. Ma läbin laiust 400 ja kõrgust 150. Neid väärtusi saate oma nõuete järgi muuta.

Jätkake ja proovige seda. Saad üleslaaditud piltide suuruse muutmise versiooni kataloogi ‘storage / profile_images / thumbnail’.

Kui otsite kõva saaki, asendage read allpool

$img = Image::make($thumbnailpath)->resize(400, 150, function($constraint) {
    $constraint->aspectRatio();
});
$img->save($thumbnailpath);

Koos

$img = Image::make($thumbnailpath)->resize(100, 100)->save($thumbnailpath);

Loodan, et saate aru, kuidas Laravelis mitu pilti üles laadida ja suurust muuta. Palun jagage oma mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem