Lataa kuva PHP: n Bulletproof Library -kirjastolla
Kuvan lataaminen palvelimelle on kehittäjien yleinen tehtävä. Yksi on saattanut tehdä tämän tehtävän satoja kertoja. Tämän latausprosessin aikana kehittäjien on huolehdittava seuraavista asioista.
- Tarkista, onko lähetetty tiedosto kuva
- Luo hakemisto, johon kuvat tallennetaan
- Luo jokaiselle kuvalle yksilöllinen nimi, jotta se ei korvaa olemassa olevaa kuvaa samalla nimellä.
- Vaihtoehtoisesti voit lisätä kuvan ulottuvuuden vahvistuksen. Jos lähetetyllä kuvalla on suuri määritetyn kokoinen koko, heitä virhe.
Nämä ovat suositeltuja tarkistuksia, joita kehittäjän tulisi noudattaa kirjoittaessaan koodia. Koodiin voidaan kirjoittaa ehdot kaikille näille vaiheille. Mutta se vie jonkin verran työtä ja koodista tulee pitkä.
Suosittelen Bulletproof- kirjaston käyttöä, joka käsittelee kaikki nämä vaiheet sinulle hupun alla. Se säästää aikaa lisätä logiikkaa kullekin vaiheelle ja vähentää rivien määrää koodistasi.
Bulletproof on PHP-suojattu kuvien latausohjelma, jolla on mukava API. Olemme kokeilleet tätä kirjastoa projektissamme ja olemme melko tyytyväisiä lopputulokseen. Siksi päätin jakaa sanan tästä kirjastosta lukijamme kanssa.
Luodinkestävän kirjaston ytimessä on seuraavat ominaisuudet, mikä tekee siitä turvallisemman.
- Käyttää exif_imagetype() -tunnistetta todellisen kuvamimeen saamiseksi (.extension)
- Tarkistaa, onko kuvan kelvollinen korkeus / leveys pikseleinä, käyttämällä getimagesize () -toimintoa.
- Puhdistetut kuvien nimet, tiukat kansio-oikeudet ja paljon muuta …
Tästä huolimatta katsotaanpa, kuinka kuvia voidaan ladata PHP: hen Bulletproof-kirjaston avulla.
Päästä alkuun
Aloita Bulletproof-kirjaston käyttö asentamalla se alla olevan Composer-komennon avulla. Varmista, että järjestelmään on asennettu Composer.
composer require samayo/bulletproof:4.0.*
Luo seuraavaksi yksinkertainen HTML-muotoinen tiedosto syöttö- ja lähetyspainikkeella.
<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>
Lähetä kuva Bulletproof Library -kirjastolla
Meille on asetettu kirjasto ja HTML-muoto. Lisätään nyt kirjaston tarjoama koodi, joka lähettää kuvan palvelimelle.
<?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();
}
}
}
?>
Olet valmis. Mene eteenpäin ja testaa se. Näet kuvasi, jotka on tallennettu "uploads" -kansioon yksilöllisellä nimellä. Käyttäjä voi muuttaa tämän sijainnin jollakin muulla.
Jos yrität ladata muita tiedostoja kuin kuvia, saat virheilmoituksen. Jos haluat asettaa ulottuvuuden, lisää vain alla oleva käsky yllä olevaan koodiin.
$file->setDimension(600, 400);
Tässä 600 on kuvan leveys ja 400 on kuvan korkeus. Säädä arvot tarpeidesi mukaan.
Lataa useita kuvia luodinkestävän kirjaston avulla
Voit halutessasi ladata useita kuvia palvelimelle tämän kirjaston avulla. Se vaatii hieman muutosta yllä olevaan koodiin. Sinun on lisättävä ‘useita’ -attribuutti tiedostosyötteeseen. Käytä myös taulukon muotoa tiedoston syötteen nimessä. Tämän jälkeen käymme läpi jokaisen kuvan ja lataamme sen palvelimelle seuraavasti.
<?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>
Se siitä! Toivon, että ymmärrät kuvan lataamisen Bulletproof-kirjaston kautta. Jaa ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.