krz/vox-populi

A Tumblr web client.

clone: git clone https://gitbay.org/krz/vox-populi.git

main: vendor/psr/http-message/src/UploadedFileInterface.php · raw

  1<?php
  2
  3namespace 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 */
 13interface 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}