# PHP пакет для управления загрузкой файлов
Пакет HttpSoft\Request реализует Psr\Http\Message\UploadedFileInterface.
Данная библиотека предоставляет базовый функционал для организации загрузки файлов по рекомендации PSR-7 HTTP Message.
Для этого пакета требуется PHP версии 7.4 или более поздней.
Установка пакета:
composer require httpsoft/http-uploaded-file # API
- HttpSoft\UploadedFile\UploadedFile — класс, реализующий Psr\Http\Message\UploadedFileInterface.
- HttpSoft\UploadedFile\UploadedFileFactory — фабрика для создания HttpSoft\UploadedFile\UploadedFile, реализует Psr\Http\Message\UploadedFileFactoryInterface.
- HttpSoft\UploadedFile\UploadedFileNormalizer — класс, отвечает за нормализацию структуры загружаемых файлов.
# Использование
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 смотрите здесь.
