MediaWiki  master
WebRequestUpload.php
Go to the documentation of this file.
1 <?php
24 
31  protected $request;
32  protected $doesExist;
33  protected $fileInfo;
34 
41  public function __construct( $request, $key ) {
42  $this->request = $request;
43  $this->doesExist = isset( $_FILES[$key] );
44  if ( $this->doesExist ) {
45  $this->fileInfo = $_FILES[$key];
46  }
47  }
48 
54  public function exists() {
55  return $this->doesExist;
56  }
57 
63  public function getName() {
64  if ( !$this->exists() ) {
65  return null;
66  }
67 
68  $name = $this->fileInfo['name'];
69 
70  # Safari sends filenames in HTML-encoded Unicode form D...
71  # Horrid and evil! Let's try to make some kind of sense of it.
72  $name = Sanitizer::decodeCharReferences( $name );
73  $name = MediaWikiServices::getInstance()->getContentLanguage()->normalize( $name );
74  wfDebug( __METHOD__ . ": {$this->fileInfo['name']} normalized to '$name'\n" );
75  return $name;
76  }
77 
83  public function getSize() {
84  if ( !$this->exists() ) {
85  return 0;
86  }
87 
88  return $this->fileInfo['size'];
89  }
90 
96  public function getTempName() {
97  if ( !$this->exists() ) {
98  return null;
99  }
100 
101  return $this->fileInfo['tmp_name'];
102  }
103 
110  public function getError() {
111  if ( !$this->exists() ) {
112  return 0; # UPLOAD_ERR_OK
113  }
114 
115  return $this->fileInfo['error'];
116  }
117 
124  public function isIniSizeOverflow() {
125  if ( $this->getError() == UPLOAD_ERR_INI_SIZE ) {
126  # PHP indicated that upload_max_filesize is exceeded
127  return true;
128  }
129 
130  $contentLength = $this->request->getHeader( 'Content-Length' );
131  $maxPostSize = wfShorthandToInteger( ini_get( 'post_max_size' ), 0 );
132 
133  if ( $maxPostSize && $contentLength > $maxPostSize ) {
134  # post_max_size is exceeded
135  return true;
136  }
137 
138  return false;
139  }
140 }
getSize()
Return the file size of the uploaded file.
getName()
Return the original filename of the uploaded file.
getError()
Return the upload error.
getTempName()
Return the path to the temporary file.
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
isIniSizeOverflow()
Returns whether this upload failed because of overflow of a maximum set in php.ini.
static decodeCharReferences( $text)
Decode any character references, numeric or named entities, in the text and return a UTF-8 string...
Definition: Sanitizer.php:1669
exists()
Return whether a file with this name was uploaded.
__construct( $request, $key)
Constructor.
Object to access the $_FILES array.
wfShorthandToInteger( $string='', $default=-1)
Converts shorthand byte notation to integer form.