# PHP package for managing Uploaded Files

The HttpSoft\UploadedFile package implements Psr\Http\Message\UploadedFileInterface.

This library provides basic functionality for organizing file uploads based on the PSR-7 HTTP Message recommendation.

This package requires PHP version 7.4 or later.

Package installation:

composer require httpsoft/http-uploaded-file

Source code on GitHub

# API

# Usage

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

$uploadedFile = new UploadedFile('file.txt', 1024, UPLOAD_ERR_OK);
// equivalently to:
$stream = UploadedFileFactory::create('file.txt', 1024, UPLOAD_ERR_OK);
$uploadedFile->getClientFilename(); // null
$uploadedFile->getClientMediaType(); // null
$uploadedFile->getError(); // 0
$uploadedFile->getSize(); // 1024

// From the item `$_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

// Usage `UploadedFileNormalizer` separately:

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`,
    ],
];
*/

Detailed description of using HttpSoft\UploadedFile\UploadedFile see here.

Detailed description of using HttpSoft\UploadedFile\UploadedFileFactory see here.

Detailed description of using HttpSoft\UploadedFile\UploadedFileNormalizer see here.