✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Ladda upp bild med Bulletproof Library i PHP

11

Att ladda upp en bild på servern är en vanlig uppgift för utvecklare. Man kan ha gjort denna uppgift hundratals gånger. Under denna uppladdningsprocess måste utvecklare ta hand om följande saker.

  • Kontrollera om den uppladdade filen är en bild
  • Skapa en katalog där bilder lagras
  • Skapa ett unikt namn för varje bild så att den inte ersätter den befintliga med samma namn.
  • Valfritt kan du lägga till validering för dimensionen på en bild. Om en uppladdad bild har en stor dimension än angiven, kasta ett fel.

Det här är de rekommenderade kontroller som en utvecklare bör följa när han skriver kod. Man kan skriva villkor för alla dessa steg i koden. Men det tar lite arbete och koden blir lång.

Jag kommer att rekommendera att använda Bulletproof- biblioteket som hanterar alla dessa steg åt dig under huven. Det sparar dig tid att lägga till logik för varje steg och minska antalet rader från din kod.

Bulletproof är en PHP-säker bilduppladdare med ett trevligt API. Vi har provat det här biblioteket för vårt projekt och vi är ganska nöjda med slutresultatet. Därför bestämde jag mig för att dela ett ord om detta bibliotek med våra läsare.

Bulletproof-biblioteket har följande funktioner i sin kärna som gör det säkrare.

  • Använder exif_imagetype() för att få den sanna bilden mime (.extension)
  • Använder getimagesize () för att kontrollera om bilden har en giltig höjd / bredd i pixlar.
  • Sanitiserade bildnamn, strikta mappbehörigheter och mer …

Med det sagt, låt oss ta en titt på hur man laddar upp bilder i PHP med hjälp av Bulletproof-biblioteket.

Komma igång

För att komma igång med Bulletproof-biblioteket, installera det med kommandot Composer nedan. Se till att du har Composer installerat på systemet.

composer require samayo/bulletproof:4.0.*

Skapa sedan ett enkelt HTML-formulär med filinmatning och skicka-knappen.

<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>

Ladda upp bild med Bulletproof Library

Vi har ett bibliotek och HTML-formulär. Låt oss nu lägga till en kod från biblioteket som laddar upp en bild på servern.

<?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();
        }
    }
}
?>

Du är färdig. Fortsätt och testa det. Du kommer att se dina bilder lagrade i mappen "uppladdningar" med ett unikt namn. Användaren kan ändra denna plats med något annat.

Om du försöker ladda upp andra filer än bilder får du ett fel. Om du vill ställa in dimension, lägg till nedanstående uttalande i ovanstående kod.

$file->setDimension(600, 400);

Här är ‘600’ bildbredd och ‘400’ är höjden på en bild. Justera värden enligt dina krav.

Ladda upp flera bilder med hjälp av Bulletproof Library

Du kanske vill ladda upp flera bilder på en server med detta bibliotek. Det kräver en liten förändring av ovanstående kod. Du måste lägga till ett attribut ‘flera’ till filinmatningen. Använd också arrayformatet för namnet på filinmatningen. Efter detta kommer vi att slinga igenom varje bild och ladda upp den till servern enligt följande.

<?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>

Det är allt! Jag hoppas att du förstår hur du laddar upp en bild via Bulletproof-biblioteket. Dela dina tankar och förslag i kommentarsektionen nedan.

relaterade artiklar

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer