PHP Компонент для загрузки файлов на сервер

Маленький и удобный компонент для загрузки файлов на сервер.

Список фич:

  1. Встроенная валидация размера, расширения и mime-типа файла
  2. Поддерживает загрузку как одного, так и нескольких фалов  без отличий в коде
  3. Расширенна информация о загруженном файле
  4. Вывод информации о загруженном файле унифицирован
  5. Библиотека состоти из 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
        )
)

 

Проект на Githubhttps://github.com/azurre/php-simple-file-uploader

Теги: PHP, Component

Комментарии (0)