PHP Компонент для загрузки файлов на сервер
Маленький и удобный компонент для загрузки файлов на сервер.
Список фич:
- Встроенная валидация размера, расширения и mime-типа файла
- Поддерживает загрузку как одного, так и нескольких фалов без отличий в коде
- Расширенна информация о загруженном файле
- Вывод информации о загруженном файле унифицирован
- Библиотека состоти из 1 (одного!) файла
Простой пример использования:
$loader = require_once __DIR__ . '/vendor/autoload.php';
use Azurre\Component\Http\Uploader;
if (isset($_FILES['file'])) {
$Uploader = new Uploader();
$Uploader
->setStoragePath('./') // Путь к папке с загруженными файлами
->upload('file');
$files = $Uploader->getFiles();
}
Более сложный:
if (isset($_FILES['file'])) {
$Uploader = new Uploader();
$Uploader
->setStoragePath('./')
->setOverwrite(true) // Перезаписываем файлы с одинаковыми именами
->setNameFormat(Uploader::NAME_FORMAT_ORIGINAL)
->setReplaceCyrillic(true) // Транслитерируем русские имена файлов
// Загружаем только картинки
->addValidator(Uploader::VALIDATOR_MIME, array('image/png', 'image/jpeg'))
->addValidator(Uploader::VALIDATOR_EXTENSION, array('png', 'jpg'))
// Размером не более 1 МБ
->addValidator(Uploader::VALIDATOR_SIZE, '1M' );
$Uploader->afterUpload(function($file){
// Делаем что-то после загрузки файла
});
// Если нужно как-то по особому формировать имена фалов
// При использовании кастомного форматера setReplaceCyrillic() и setFormatName() будут проигнорированны
$customData = 'key';
$Uploader->setNameFormatter(function($file, $Upl) use($customData){
$newName = str_replace(' ', '-', $file['name']);
$newName = $Upl->transliterate($newName);
$newName .= "_{$customData}_" . rand(1000,99999) .'.'. $file['extension'];
return $newName;
});
try {
$Uploader->upload('file');
$files = $Uploader->getFiles();
echo '<pre>'. print_r($files, true) . '</pre>';
} catch (\Exception $e) {
echo 'Error:' . $e->getMessage();
}
}
Пример вывода:
Array
(
[0] => Array
(
[name] => login1
[fullName] => login1.jpg
[newName] => login1_57f6bd1710245.jpg
[fullPath] => /home/sites/test.local/libs/uploader/login1_57f6bd1710245.jpg
[extension] => jpg
[mime] => image/jpeg
[tmpName] => /tmp/php13emrc
[size] => 1636
[error] => 0
)
[1] => Array
(
[name] => 0340
[fullName] => 0340.jpg
[newName] => 0340_57f2b14d74b43.jpg
[fullPath] => /home/sites/test.local/libs/uploader/0340_57f2b14d74b43.jpg
[extension] => jpg
[mime] => image/jpeg
[tmpName] => /tmp/phpSBTzyC
[size] => 3109
[error] => 0
)
)
Проект на Github: https://github.com/azurre/php-simple-file-uploader
Комментарии (0)