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

Laadige pilt üles PHP-s kuulikindla teegi abil

20

Kujutise serverisse üleslaadimine on arendajatele tavaline ülesanne. Võib-olla on see ülesanne tehtud sadu kordi. Selle üleslaadimise käigus peavad arendajad hoolitsema järgmiste asjade eest.

  • Kontrollige, kas üleslaaditud fail on pilt
  • Looge kataloog, kuhu pilte salvestatakse
  • Looge igale pildile kordumatu nimi, nii et see ei asenda olemasolevat sama nimega.
  • Lisage valikuliselt ka pildi dimensiooni valideerimine. Kui üleslaaditud pildil on määratust suurem mõõde, visake viga.

Need on soovitatavad kontrollid, mida arendaja peaks koodi kirjutamise ajal järgima. Kõigi nende sammude kohta saab koodi kirjutada tingimused. Kuid see võtab natuke tööd ja kood muutub pikaks.

Soovitan kasutada kuulikindlat teeki, mis tegeleb kõigi nende toimingutega teie kapoti all. See säästab teie aega iga sammu loogika lisamiseks ja koodist ridade arvu vähendamiseks.

Bulletproof on PHP turvaline piltide üleslaadija, kena API-ga. Oleme seda raamatukogu oma projektis proovinud ja oleme lõpptulemusega üsna rahul. Sellepärast otsustasin selle raamatukogu kohta meie lugejatega jagada.

Kuulikindla teegi tuumal on järgmised funktsioonid, mis muudavad selle turvalisemaks.

  • Tõelise pildi miimika (.extension) saamiseks kasutab exif_imagetype()
  • Kasutab pilti getimagesize (), et kontrollida, kas pildil on kehtiv kõrgus / laius pikslites.
  • Puhastatud piltide nimed, ranged kaustaõigused ja palju muud …

Sellest hoolimata vaatame, kuidas Bulletproofi teeki abil pilte PHP-sse üles laadida.

Alustamine

Bulletproof-teegiga alustamiseks installige see allpool oleva Composeri käsu abil. Veenduge, et Composer oleks süsteemi installitud.

composer require samayo/bulletproof:4.0.*

Järgmisena looge faili sisestamise ja esitamise nupuga lihtne HTML-vorm.

<form method="POST" enctype="multipart/form-data">
    <p><input type="file" name="image" accept="image/*" required /></p>
    <input type="submit" name="submit" value="Upload" />
</form>

Laadige pilt üles bulletproof Library abil

Oleme seadistatud teegi ja HTML-vormiga. Lisame nüüd teegi pakutava koodi, mis laadib serverisse pildi üles.

<?php
require_once 'vendor/autoload.php';
 
if (isset($_POST['submit'])) {
 
    $file = new BulletproofImage($_FILES);
 
    $file->setLocation('uploads');
 
    if ($file["image"]) {
        $upload = $file->upload();
 
        if ($upload) {
            echo $upload->getFullPath();
        } else {
            echo $file->getError();
        }
    }
}
?>

Sa oled valmis. Jätkake ja proovige seda. Näete oma pilte, mis on unikaalse nimega kausta ‘uploads’ salvestatud. Kasutaja saab seda asukohta millegi muuga muuta.

Kui proovite üles laadida muid faile kui pildid, kuvatakse tõrge. Igaks juhuks, kui soovite ka dimensiooni seada, lisage ülaltoodud koodile järgmine lause.

$file->setDimension(600, 400);

Siin on ‘600’ pildi laius ja ‘400’ kujutise kõrgus. Kohandage väärtusi vastavalt oma vajadustele.

Laadige üles mitu pilti täppjaama abil

Selle teegi abil võite üles laadida mitu pilti serverisse. See nõuab ülaltoodud koodi veidi muutmist. Peate lisama failisisendile atribuudi ‘multiple’. Samuti kasutage failisisendi nime massiivivormingut. Pärast seda vaatame iga pildi läbi ja laadime selle serverisse üles järgmiselt.

<?php
require_once 'vendor/autoload.php';
 
if (isset($_POST['submit'])) {
    for($i = 0; $i < count($_FILES['image']['name']); $i++) {
  
        $arr_file = array(
            "name" => $_FILES['image']['name'][$i],
            "type" => $_FILES['image']['type'][$i],
            "tmp_name" => $_FILES['image']['tmp_name'][$i],
            "error" => $_FILES['image']['error'][$i],
            "size" => $_FILES['image']['size'][$i],
        );
  
        $file = new BulletproofImage($arr_file);
  
        $file->setLocation('uploads');
  
        $upload = $file->upload();
    }
}
?>
<form method="POST" enctype="multipart/form-data">
    <p><input type="file" name="image[]" accept="image/*" multiple required /></p>
    <input type="submit" name="submit" value="Upload" />
</form>

See selleks! Loodan, et saate aru, kuidas pilti Bulletproofi teegi kaudu üles laadida. 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