64 lines
2.2 KiB
PHP
64 lines
2.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/*
|
|
* This file is part of the TYPO3 CMS project.
|
|
*
|
|
* It is free software; you can redistribute it and/or modify it under
|
|
* the terms of the GNU General Public License, either version 2
|
|
* of the License, or any later version.
|
|
*
|
|
* For the full copyright and license information, please read the
|
|
* LICENSE.txt file that was distributed with this source code.
|
|
*
|
|
* The TYPO3 project - inspiring people to share!
|
|
*/
|
|
|
|
namespace TYPO3\CMS\Core\Http;
|
|
|
|
use Psr\Http\Message\StreamInterface;
|
|
use Psr\Http\Message\UploadedFileFactoryInterface;
|
|
use Psr\Http\Message\UploadedFileInterface;
|
|
use Symfony\Component\DependencyInjection\Attribute\AsAlias;
|
|
|
|
/**
|
|
* @internal Note that this is not public API, use PSR-17 interfaces instead.
|
|
*/
|
|
#[AsAlias(UploadedFileFactoryInterface::class, public: true)]
|
|
readonly class UploadedFileFactory implements UploadedFileFactoryInterface
|
|
{
|
|
/**
|
|
* Create a new uploaded file.
|
|
*
|
|
* If a size is not provided it will be determined by checking the size of
|
|
* the file.
|
|
*
|
|
* @see https://php.net/manual/features.file-upload.post-method.php
|
|
* @see https://php.net/manual/features.file-upload.errors.php
|
|
*
|
|
* @param StreamInterface $stream Underlying stream representing the uploaded file content.
|
|
* @param int|null $size in bytes
|
|
* @param int $error PHP file upload error
|
|
* @param string|null $clientFilename Filename as provided by the client, if any.
|
|
* @param string|null $clientMediaType Media type as provided by the client, if any.
|
|
* @throws \InvalidArgumentException If the file resource is not readable.
|
|
*/
|
|
public function createUploadedFile(
|
|
StreamInterface $stream,
|
|
?int $size = null,
|
|
int $error = \UPLOAD_ERR_OK,
|
|
?string $clientFilename = null,
|
|
?string $clientMediaType = null
|
|
): UploadedFileInterface {
|
|
if ($size === null) {
|
|
$size = $stream->getSize();
|
|
if ($size === null) {
|
|
throw new \InvalidArgumentException('Stream size could not be determined.', 1566823423);
|
|
}
|
|
}
|
|
|
|
return new UploadedFile($stream, $size, $error, $clientFilename, $clientMediaType);
|
|
}
|
|
}
|