Security update to Drupal 8.4.6
[yaffs-website] / vendor / psr / http-message / src / UploadedFileInterface.php
1 <?php
2
3 namespace Psr\Http\Message;
4
5 /**
6  * Value object representing a file uploaded through an HTTP request.
7  *
8  * Instances of this interface are considered immutable; all methods that
9  * might change state MUST be implemented such that they retain the internal
10  * state of the current instance and return an instance that contains the
11  * changed state.
12  */
13 interface UploadedFileInterface
14 {
15     /**
16      * Retrieve a stream representing the uploaded file.
17      *
18      * This method MUST return a StreamInterface instance, representing the
19      * uploaded file. The purpose of this method is to allow utilizing native PHP
20      * stream functionality to manipulate the file upload, such as
21      * stream_copy_to_stream() (though the result will need to be decorated in a
22      * native PHP stream wrapper to work with such functions).
23      *
24      * If the moveTo() method has been called previously, this method MUST raise
25      * an exception.
26      *
27      * @return StreamInterface Stream representation of the uploaded file.
28      * @throws \RuntimeException in cases when no stream is available or can be
29      *     created.
30      */
31     public function getStream();
32
33     /**
34      * Move the uploaded file to a new location.
35      *
36      * Use this method as an alternative to move_uploaded_file(). This method is
37      * guaranteed to work in both SAPI and non-SAPI environments.
38      * Implementations must determine which environment they are in, and use the
39      * appropriate method (move_uploaded_file(), rename(), or a stream
40      * operation) to perform the operation.
41      *
42      * $targetPath may be an absolute path, or a relative path. If it is a
43      * relative path, resolution should be the same as used by PHP's rename()
44      * function.
45      *
46      * The original file or stream MUST be removed on completion.
47      *
48      * If this method is called more than once, any subsequent calls MUST raise
49      * an exception.
50      *
51      * When used in an SAPI environment where $_FILES is populated, when writing
52      * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be
53      * used to ensure permissions and upload status are verified correctly.
54      *
55      * If you wish to move to a stream, use getStream(), as SAPI operations
56      * cannot guarantee writing to stream destinations.
57      *
58      * @see http://php.net/is_uploaded_file
59      * @see http://php.net/move_uploaded_file
60      * @param string $targetPath Path to which to move the uploaded file.
61      * @throws \InvalidArgumentException if the $targetPath specified is invalid.
62      * @throws \RuntimeException on any error during the move operation, or on
63      *     the second or subsequent call to the method.
64      */
65     public function moveTo($targetPath);
66     
67     /**
68      * Retrieve the file size.
69      *
70      * Implementations SHOULD return the value stored in the "size" key of
71      * the file in the $_FILES array if available, as PHP calculates this based
72      * on the actual size transmitted.
73      *
74      * @return int|null The file size in bytes or null if unknown.
75      */
76     public function getSize();
77     
78     /**
79      * Retrieve the error associated with the uploaded file.
80      *
81      * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants.
82      *
83      * If the file was uploaded successfully, this method MUST return
84      * UPLOAD_ERR_OK.
85      *
86      * Implementations SHOULD return the value stored in the "error" key of
87      * the file in the $_FILES array.
88      *
89      * @see http://php.net/manual/en/features.file-upload.errors.php
90      * @return int One of PHP's UPLOAD_ERR_XXX constants.
91      */
92     public function getError();
93     
94     /**
95      * Retrieve the filename sent by the client.
96      *
97      * Do not trust the value returned by this method. A client could send
98      * a malicious filename with the intention to corrupt or hack your
99      * application.
100      *
101      * Implementations SHOULD return the value stored in the "name" key of
102      * the file in the $_FILES array.
103      *
104      * @return string|null The filename sent by the client or null if none
105      *     was provided.
106      */
107     public function getClientFilename();
108     
109     /**
110      * Retrieve the media type sent by the client.
111      *
112      * Do not trust the value returned by this method. A client could send
113      * a malicious media type with the intention to corrupt or hack your
114      * application.
115      *
116      * Implementations SHOULD return the value stored in the "type" key of
117      * the file in the $_FILES array.
118      *
119      * @return string|null The media type sent by the client or null if none
120      *     was provided.
121      */
122     public function getClientMediaType();
123 }