...
✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Prześlij obraz za pomocą Bulletproof Library w PHP

18

Wgrywanie obrazu na serwer jest częstym zadaniem programistów. Można to zrobić setki razy. Podczas tego procesu przesyłania programiści muszą zadbać o następujące rzeczy.

  • Sprawdź, czy przesłany plik jest obrazem
  • Utwórz katalog, w którym będą przechowywane obrazy
  • Wygeneruj unikalną nazwę dla każdego obrazu, aby nie zastępował istniejącego o tej samej nazwie.
  • Opcjonalnie dodaj weryfikację wymiaru obrazu. Jeśli przesłany obraz ma większy wymiar niż określony, zgłoś błąd.

Są to zalecane kontrole, które programista powinien wykonać podczas pisania kodu. W kodzie można napisać warunki dla wszystkich tych kroków. Ale zajmie to trochę pracy, a kod stanie się długi.

Polecam korzystanie z biblioteki Bulletproof, która obsługuje wszystkie te kroki pod maską. Oszczędza to czas na dodawanie logiki dla każdego kroku i zmniejszenie liczby linii kodu.

Bulletproof to bezpieczny program do przesyłania obrazów PHP z ładnym interfejsem API. Wypróbowaliśmy tę bibliotekę w naszym projekcie i jesteśmy całkiem zadowoleni z efektu końcowego. Dlatego postanowiłem podzielić się z naszymi czytelnikami słowem o tej bibliotece.

Biblioteka Bulletproof ma w swoim rdzeniu następujące funkcje, dzięki czemu jest bezpieczniejsza.

  • Używa exif_imagetype(), aby uzyskać prawdziwy mime obrazu (.extension)
  • Używa getimagesize() do sprawdzenia, czy obrazek ma prawidłową wysokość/szerokość w pikselach.
  • Oczyszczone nazwy obrazów, ścisłe uprawnienia do folderów i nie tylko…

Biorąc to pod uwagę, przyjrzyjmy się, jak przesyłać obrazy w PHP za pomocą biblioteki Bulletproof.

Pierwsze kroki

Aby rozpocząć korzystanie z biblioteki Bulletproof, zainstaluj ją za pomocą poniższego polecenia Composer. Upewnij się, że masz zainstalowany Composer w systemie.

composer require samayo/bulletproof:4.0.*

Następnie utwórz prosty formularz HTML z wejściem pliku i przyciskiem prześlij.

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

Prześlij obraz za pomocą Biblioteki kuloodpornej

Jesteśmy przygotowani z biblioteką i formularzem HTML. Dodajmy teraz kod dostarczony przez bibliotekę, która przesyła obraz na serwer.

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

Skończyłeś. Śmiało i przetestuj to. Zobaczysz swoje obrazy przechowywane w folderze „przesłane" o unikalnej nazwie. Użytkownik może zmienić tę lokalizację na coś innego.

Jeśli spróbujesz przesłać pliki inne niż obrazy, pojawi się błąd. Na wszelki wypadek, jeśli chcesz ustawić również wymiar, dodaj poniższą instrukcję w powyższym kodzie.

$file->setDimension(600, 400);

Tutaj „600″ to szerokość obrazu, a „400″ to wysokość obrazu. Dostosuj wartości zgodnie ze swoimi wymaganiami.

Prześlij wiele obrazów za pomocą kuloodpornej biblioteki

Możesz przesłać wiele obrazów na serwer za pomocą tej biblioteki. Wymaga to niewielkiej zmiany w powyższym kodzie. Musisz dodać atrybut „wiele” do pliku wejściowego. Użyj również formatu tablicy dla nazwy pliku wejściowego. Następnie przejdziemy przez każdy obraz i prześlemy go na serwer w następujący sposób.

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

Otóż ​​to! Mam nadzieję, że rozumiesz, jak przesłać obraz za pośrednictwem biblioteki Bulletproof. Podziel się swoimi przemyśleniami i sugestiami w sekcji komentarzy poniżej.

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów