1<?php
2
3namespace Psr\Http\Message;
4
5interface UploadedFileFactoryInterface
6{
7    /**
8     * Create a new uploaded file.
9     *
10     * If a size is not provided it will be determined by checking the size of
11     * the file.
12     *
13     * @see http://php.net/manual/features.file-upload.post-method.php
14     * @see http://php.net/manual/features.file-upload.errors.php
15     *
16     * @param StreamInterface $stream Underlying stream representing the
17     *     uploaded file content.
18     * @param int $size in bytes
19     * @param int $error PHP file upload error
20     * @param string $clientFilename Filename as provided by the client, if any.
21     * @param string $clientMediaType Media type as provided by the client, if any.
22     *
23     * @return UploadedFileInterface
24     *
25     * @throws \InvalidArgumentException If the file resource is not readable.
26     */
27    public function createUploadedFile(
28        StreamInterface $stream,
29        int $size = null,
30        int $error = \UPLOAD_ERR_OK,
31        string $clientFilename = null,
32        string $clientMediaType = null
33    ): UploadedFileInterface;
34}
35