fileTmpPath = $file['tmp_name']; $this->fileName = $file['name']; $this->fileSize = $file['size']; $this->fileType = $file['type']; $this->fileNameCmps = explode('.', $this->fileName); $this->fileExtension = strtolower(end($this->fileNameCmps)); $this->allowedFileExtensions = $extensions; $this->hashing = $hashing; } public function upload($uploadDir = "/resources/upload/"): bool { if ($this->hashing) { $newFileName = md5(time() . $this->fileName) . '.' . $this->fileExtension; if (in_array($this->fileExtension, $this->allowedFileExtensions)) { $this->uploadDir = $uploadDir . mb_substr($newFileName, 0, 2) . '/' . mb_substr($newFileName, 2, 2) . '/'; $oldMask = umask(0); mkdir(ROOT_DIR . $this->uploadDir, 0775, true); umask($oldMask); $uploadFileDir = ROOT_DIR . $this->uploadDir; $this->destPath = $uploadFileDir . $newFileName; $this->uploadFile = $this->uploadDir . $newFileName; move_uploaded_file($this->fileTmpPath, $this->destPath); return true; } else { return false; } } else { if (in_array($this->fileExtension, $this->allowedFileExtensions)) { $this->uploadDir = $uploadDir; $oldMask = umask(0); mkdir(ROOT_DIR . $this->uploadDir, 0775, true); umask($oldMask); $uploadFileDir = ROOT_DIR . $this->uploadDir; $this->destPath = $uploadFileDir . $this->fileName; $this->uploadFile = $this->uploadDir . $this->fileName; move_uploaded_file($this->fileTmpPath, $this->destPath); return true; } else { return false; } } } public function setAllowedFileExtensions(array $allowedFileExtensions): void { $this->allowedFileExtensions = $allowedFileExtensions; } public function getFullUploadedPath(): string { return $this->destPath; } public function setDestPath(string $destPath): void { $this->destPath = $destPath; } public function setUploadDir(string $uploadDir): void { $this->uploadDir = $uploadDir; } public function setUploadFile(string $uploadFile): void { $this->uploadFile = $uploadFile; } public function getUploadDir(): string { return $this->uploadDir; } public function getUploadFile(): string { return $this->uploadFile; } }