58 'deny' => PHP_EXTENSIONS_DEFAULT
76 $this->fileExtensionPermissions[
'allow'] = GeneralUtility::uniqueList(strtolower($allowedFilePermissions));
77 $this->fileExtensionPermissions[
'deny'] = GeneralUtility::uniqueList(strtolower($deniedFilePermissions));
88 $fileExtension = strtolower($fileExtension);
91 if ($this->fileExtensionPermissions[
'allow'] ===
'*' || GeneralUtility::inList($this->fileExtensionPermissions[
'allow'], $fileExtension)) {
95 if ($this->fileExtensionPermissions[
'deny'] ===
'*' || GeneralUtility::inList($this->fileExtensionPermissions[
'deny'], $fileExtension)) {
100 if ($this->fileExtensionPermissions[
'allow'] ===
'*') {
103 if ($this->fileExtensionPermissions[
'deny'] ===
'*') {
124 return GeneralUtility::verifyFilenameAgainstDenyPattern($filename) && $this->
is_allowed($ext);
136 if (GeneralUtility::validPathStr($theDir)) {
138 if (@is_dir($theDir)) {
158 public function getUniqueName($theFile, $theDest, $dontCheckForUnique =
false)
163 $origFileInfo = GeneralUtility::split_fileref($theFile);
167 $fileInfo = $origFileInfo;
168 $theDestFile = $theDest .
'/' . $fileInfo[
'file'];
170 if (!file_exists($theDestFile) || $dontCheckForUnique) {
175 $theTempFileBody = preg_replace(
'/_[0-9][0-9]$/',
'', $origFileInfo[
'filebody']);
177 $theOrigExt = $origFileInfo[
'realFileext'] ?
'.' . $origFileInfo[
'realFileext'] :
'';
178 for ($a = 1; $a <= $this->maxNumber + 1; $a++) {
179 if ($a <= $this->maxNumber) {
181 $insert =
'_' . sprintf(
'%02d', $a);
184 $insert =
'_' . substr(md5(uniqid(
'',
true)), 0, $this->uniquePrecision);
186 $theTestFile = $theTempFileBody . $insert . $theOrigExt;
187 $theDestFile = $theDest .
'/' . $theTestFile;
189 if (!file_exists($theDestFile)) {
215 if (
$GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'UTF8filesystem']) {
217 $cleanFileName = preg_replace(
'/[' . self::UNSAFE_FILENAME_CHARACTER_EXPRESSION .
']/u',
'_', trim($fileName));
219 $fileName = GeneralUtility::makeInstance(CharsetConverter::class)->utf8_char_mapping($fileName);
221 $cleanFileName = preg_replace(
'/[' . self::UNSAFE_FILENAME_CHARACTER_EXPRESSION .
'\\xC0-\\xFF]/',
'_', trim($fileName));
224 return rtrim($cleanFileName,
'.');