# Класс HttpSoft\Message\UploadedFile
Абстракция для удобного управления загружаемыми файлами, реализует Psr\Http\Message\UploadedFileInterface.
use HttpSoft\Message\Stream;
use HttpSoft\Message\UploadedFile;
$uploadedFile = new UploadedFile('file.txt', 1024, UPLOAD_ERR_OK);
$uploadedFile->getClientFilename(); // null
$uploadedFile->getClientMediaType(); // null
$uploadedFile->getError(); // 0
$uploadedFile->getSize(); // 1024
$uploadedFile = new UploadedFile('file.txt', 1024, UPLOAD_ERR_OK, 'file.txt', 'text/plain');
$uploadedFile->getClientFilename(); // 'file.txt'
$uploadedFile->getClientMediaType(); // 'text/plain'
$uploadedFile->getError(); // 0
$uploadedFile->getSize(); // 1024
$uploadedFile->getStream()->getContents(); // Content
$uploadedFile->moveTo('new/path/to/file.txt');
file_get_contents('new/path/to/file.txt'); // Content
// Create from resource:
$resource = fopen('path/to/file', 'wb+');
$uploadedFile = new UploadedFile($resource, 1024, UPLOAD_ERR_OK, 'file.txt', 'text/plain');
// Create from `StreamInterface` instance:
$stream = new Stream($resource);
$uploadedFile = new UploadedFile($stream, 1024, UPLOAD_ERR_OK, 'file.txt', 'text/plain');
# Публичные методы
Оригинальное подробное описание методов смотрите в Psr\Http\Message\UploadedFileInterface.
/**
* @param StreamInterface|string|resource $streamOrFile
* @param int $size
* @param int $error
* @param string|null $clientFilename
* @param string|null $clientMediaType
*/
public function __construct(
$streamOrFile,
int $size,
int $error,
string $clientFilename = null,
string $clientMediaType = null
);
# moveTo
Перемещает загруженный файл в новое место. Должен быть вызван только один раз.
/**
* @param string $targetPath
*/
public function moveTo($targetPath): void;
Этот метод гарантированно работает как в среде SAPI, так и в среде отличной от SAPI.
Если указанно невалидное значение $targetPath
, будет брошено исключение \InvalidArgumentException
.
При любой ошибке во время операции перемещения или при повторных вызовах метода будет брошено исключение \RuntimeException
.
use HttpSoft\Message\UploadedFile;
$uploadedFile = new UploadedFile('path/to/file.txt', 1024, UPLOAD_ERR_OK, 'file.txt', 'text/plain');
$uploadedFile->getStream()->getMetadata('uri'); // 'path/to/file.txt'
$uploadedFile->moveTo('new/path/to/new.txt');
$uploadedFile->getSize(); // 1024
$uploadedFile->getError(); // 0
$uploadedFile->getClientFilename(); // 'file.txt'
$uploadedFile->getClientMediaType(); // 'text/plain'
$uploadedFile = new UploadedFile('path/to/file.txt', 1024, UPLOAD_ERR_OK, 'file.txt', 'text/plain');
$uploadedFile->moveTo('target/path/directory/is/not/writeable'); // throws InvalidArgumentException
$uploadedFile->moveTo('target/path/does/not/exist'); // throws InvalidArgumentException
$uploadedFile = new UploadedFile('path/to/file.txt', 1024, UPLOAD_ERR_OK, 'file.txt', 'text/plain');
$uploadedFile->moveTo('new/path/to/new.txt'); // Ok
$uploadedFile->moveTo('new/path/to/new.txt'); // throws RuntimeException
# getStream
Возвращает экземпляр потока, представляющий загруженный файл. Должен быть вызван перед вызовом метода moveTo()
.
public function getStream(): StreamInterface;
Методы Psr\Http\Message\StreamInterface реализованы в HttpSoft\Message\StreamTrait.
Если метод moveTo()
был вызван ранее или в тех случаях, когда поток недоступен или не может быть создан, будет брошено исключение \RuntimeException
.
# getSize
Возвращает размер файла в байтах или null
, если он неизвестен.
public function getSize(): ?int;
Аналогично ключу size
файла в глобальном массиве $_FILES
.
# getError
Возвращает ошибку, связанную с загруженным файлом.
public function getError(): int;
Возвращает значение одной из констант PHP UPLOAD_ERR_XXX.
Если файл был успешно загружен, этот метод должен вернуть UPLOAD_ERR_OK
(0
).
Аналогично ключу error
файла в глобальном массиве $_FILES
.
# getClientFilename
Возвращает имя файла, отправленное клиентом или null
, если оно не было передано.
public function getClientFilename(): ?string;
Аналогично ключу name
файла в глобальном массиве $_FILES
.
# getClientMediaType
Возвращает медиа тип файла, отправленный клиентом или null
, если он не был передан.
public function getClientMediaType(): ?string;
Аналогично ключу type
файла в глобальном массиве $_FILES
.