Загрузить изображение с помощью Bulletproof Library в PHP
Загрузка изображения на сервер – обычная задача разработчиков. Эту задачу можно было проделывать сотни раз. В процессе загрузки разработчики должны позаботиться о следующих вещах.
- Проверьте, является ли загруженный файл изображением
- Создайте каталог, в котором будут храниться изображения
- Создайте уникальное имя для каждого изображения, чтобы оно не заменяло существующее с тем же именем.
- При желании добавьте проверку размера изображения. Если загруженное изображение имеет больший размер, чем указано, выдается ошибка.
Это рекомендуемые проверки, которым должен следовать разработчик при написании кода. Условия для всех этих шагов можно записать в коде. Но это потребует некоторой работы, и код станет длинным.
Я рекомендую использовать библиотеку Bulletproof, которая выполняет все эти шаги за вас. Это сэкономит вам время на добавление логики для каждого шага и сокращение количества строк в вашем коде.
Bulletproof – это безопасный PHP-загрузчик изображений с красивым API. Мы опробовали эту библиотеку для своего проекта и вполне довольны конечным результатом. Поэтому я решил рассказать нашим читателям пару слов об этой библиотеке.
В основе библиотеки Bulletproof есть следующие функции, которые делают ее более безопасной.
- Использует exif_imagetype() для получения mime истинного изображения (.extension)
- Использует getimagesize (), чтобы проверить, имеет ли изображение допустимую высоту / ширину в пикселях.
- Обеззараженные имена изображений, строгие права доступа к папкам и многое другое…
При этом давайте посмотрим, как загружать изображения в PHP с помощью библиотеки Bulletproof.
Начиная
Чтобы начать работу с библиотекой Bulletproof, установите ее с помощью команды Composer ниже. Убедитесь, что в системе установлен Composer.
composer require samayo/bulletproof:4.0.*
Затем создайте простую HTML-форму с вводом файла и кнопкой отправки.
<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>
Загрузить изображение с помощью Bulletproof Library
У нас есть библиотека и HTML-форма. Теперь давайте добавим код, предоставленный библиотекой, который загружает изображение на сервер.
<?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();
}
}
}
?>
Вы сделали. Идите и проверьте это. Вы увидите свои изображения, хранящиеся в папке «uploads» с уникальным именем. Пользователь может изменить это местоположение на что-нибудь другое.
Если вы попытаетесь загрузить файлы, отличные от изображений, вы получите сообщение об ошибке. На всякий случай, если вы хотите также установить размер, добавьте приведенный ниже оператор в приведенный выше код.
$file->setDimension(600, 400);
Здесь «600» – это ширина изображения, а «400» – это высота изображения. Отрегулируйте значения в соответствии с вашими требованиями.
Загрузить несколько изображений с помощью Bulletproof Library
Вы можете загрузить несколько изображений на сервер, используя эту библиотеку. Это требует небольшого изменения в приведенном выше коде. Вам нужно добавить атрибут «несколько» к входному файлу. Также используйте формат массива для имени входного файла. После этого мы переберем каждое изображение и загрузим его на сервер следующим образом.
<?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>
Это оно! Надеюсь, вы понимаете, как загрузить изображение через библиотеку Bulletproof. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.
Статьи по Теме
- Руководство по загрузке и сжатию изображений в Laravel
- Как оптимизировать изображение при загрузке в PHP
- Изменить размер изображения в PHP с помощью TinyPNG