12use InvalidArgumentException;
25 private const UNKNOWN_CONTENT_TYPE =
'unknown/unknown';
47 throw new InvalidArgumentException( __FUNCTION__ .
" given storage path '$fname'." );
53 'obResetFunc' =>
'wfResetOutputBuffers',
54 'streamMimeFunc' => [ self::class,
'contentTypeFromPath' ],
55 'headerFunc' => [ self::class,
'setHeader' ],
59 return $streamer->stream( $headers, $sendErrors, $optHeaders, $flags );
68 RequestContext::getMain()->getRequest()->response()->header( $header );
85 $ext = strrchr( $filename,
'.' );
86 $ext = $ext ? strtolower( substr( $ext, 1 ) ) :
'';
88 # trivial detection by file extension,
89 # used for thumbnails (thumb.php)
90 if ( $trivialMimeDetection ) {
103 return self::UNKNOWN_CONTENT_TYPE;
110 $type = $magic->getMimeTypeFromExtensionOrNull( $ext );
124 [ , $extList ] = UploadBase::splitExtensions( $filename );
125 if ( UploadBase::checkFileExtensionList( $extList, $prohibitedFileExtensions ) ) {
126 return self::UNKNOWN_CONTENT_TYPE;
129 $checkFileExtensions &&
130 $strictFileExtensions &&
131 !UploadBase::checkFileExtensionList( $extList, $fileExtensions )
133 return self::UNKNOWN_CONTENT_TYPE;
135 if ( $verifyMimeType && $type !==
null && in_array( strtolower( $type ), $mimeTypeExclusions ) ) {
136 return self::UNKNOWN_CONTENT_TYPE;
144class_alias( StreamFile::class,
'StreamFile' );
Group all the pieces relevant to the context of a request into one instance.
A class containing constants representing the names of configuration variables.
const MimeTypeExclusions
Name constant for the MimeTypeExclusions setting, for use with Config::get()
const ProhibitedFileExtensions
Name constant for the ProhibitedFileExtensions setting, for use with Config::get()
const TrivialMimeDetection
Name constant for the TrivialMimeDetection setting, for use with Config::get()
const VerifyMimeType
Name constant for the VerifyMimeType setting, for use with Config::get()
const StrictFileExtensions
Name constant for the StrictFileExtensions setting, for use with Config::get()
const FileExtensions
Name constant for the FileExtensions setting, for use with Config::get()
const CheckFileExtensions
Name constant for the CheckFileExtensions setting, for use with Config::get()