12use InvalidArgumentException;
25 private const UNKNOWN_CONTENT_TYPE =
'unknown/unknown';
47 throw new InvalidArgumentException( __FUNCTION__ .
" given storage path '$fname'." );
54 'streamMimeFunc' => self::contentTypeFromPath( ... ),
55 'headerFunc' =>
static function (
string $header ):
void {
56 RequestContext::getMain()->getRequest()->response()->header( $header );
61 return $streamer->
stream( $headers, $sendErrors, $optHeaders, $flags );
76 $trivialMimeDetection = $services->getMainConfig()
79 $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
81 # trivial detection by file extension,
82 # used for thumbnails (thumb.php)
83 if ( $trivialMimeDetection ) {
84 return match ( $ext ) {
88 'jpeg' =>
'image/jpeg',
89 'webp' =>
'image/webp',
90 default => self::UNKNOWN_CONTENT_TYPE,
97 $type = $services->getMimeAnalyzer()->getMimeTypeFromExtensionOrNull( $ext );
104 $mainConfig = $services->getMainConfig();
111 [ , $extList ] = UploadBase::splitExtensions( $filename );
112 if ( UploadBase::checkFileExtensionList( $extList, $prohibitedFileExtensions ) ) {
113 return self::UNKNOWN_CONTENT_TYPE;
116 $checkFileExtensions &&
117 $strictFileExtensions &&
118 !UploadBase::checkFileExtensionList( $extList, $fileExtensions )
120 return self::UNKNOWN_CONTENT_TYPE;
122 if ( $verifyMimeType && $type !==
null && in_array( strtolower( $type ), $mimeTypeExclusions ) ) {
123 return self::UNKNOWN_CONTENT_TYPE;
131class_alias( StreamFile::class,
'StreamFile' );
wfResetOutputBuffers( $resetGzipEncoding=true)
Clear away any user-level output buffers, discarding contents.
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()