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

Пакет HttpSoft\Request реализует Psr\Http\Message\UploadedFileInterface.

Данная библиотека предоставляет базовый функционал для организации загрузки файлов по рекомендации PSR-7 HTTP Message.

Для этого пакета требуется PHP версии 7.4 или более поздней.

Установка пакета:

composer require httpsoft/http-uploaded-file

Исходный код на GitHub

# API

# Использование

use HttpSoft\UploadedFile\UploadedFile;
use HttpSoft\UploadedFile\UploadedFileFactory;
use HttpSoft\UploadedFile\UploadedFileNormalizer;

$uploadedFile = new UploadedFile('file.txt', 1024, UPLOAD_ERR_OK);
// эквивалентно:
$stream = UploadedFileFactory::create('file.txt', 1024, UPLOAD_ERR_OK);
$uploadedFile->getClientFilename(); // null
$uploadedFile->getClientMediaType(); // null
$uploadedFile->getError(); // 0
$uploadedFile->getSize(); // 1024

// Из элемента `$_FILES`:
$uploadedFile = UploadedFileFactory::createFromArray([
    'name' => 'file.txt',
    'type' => 'text/plain',
    'tmp_name' => '/tmp/phpN3FmFr',
    'error' => UPLOAD_ERR_OK,
    'size' => 1024,
]);
$uploadedFile->getClientFilename(); // 'file.txt'
$uploadedFile->getClientMediaType(); // 'text/plain'
$uploadedFile->getStream()->getMetadata('uri'); // '/tmp/phpN3FmFr'
$uploadedFile->getError(); // 0
$uploadedFile->getSize(); // 1024

// Использование `UploadedFileNormalizer` отдельно:

print_r($_FILES);
/*
[
    'form' => [
        'name' => [
            'file_1' => 'file.txt',
            'file_2' => 'image.png',
        ],
        'type' => [
            'file_1' => 'text/plain',
            'file_2' => 'image/png',
        ],
        'tmp_name' => [
            'file_1' => '/tmp/phpN3FmFr',
            'file_2' => '/tmp/phpLs7DaJ',
        ],
        'error' => [
            'file_1' => 0,
            'file_2' => 0,
        ],
        'size' => [
            'file_1' => 1024,
            'file_2' => 98174,
        ],
    ],
];
*/

print_r(UploadedFileNormalizer::normalize($_FILES));
/*
[
    'form' => [
        'file_1' => `HttpSoft\UploadedFile\UploadedFile Object`,
        'file_2' => `HttpSoft\UploadedFile\UploadedFile Object`,
    ],
];
*/

Подробное описание использования HttpSoft\UploadedFile\UploadedFile смотрите здесь.

Подробное описание использования HttpSoft\UploadedFile\UploadedFileFactory смотрите здесь.

Подробное описание использования HttpSoft\UploadedFile\UploadedFileNormalizer смотрите здесь.