function check() { if (isset($_FILES[$this->ref])) { $this->fileInfo = $_FILES[$this->ref]; } else { $this->fileInfo = array('name' => '', 'type' => '', 'size' => 0, 'tmp_name' => '', 'error' => UPLOAD_ERR_NO_FILE); } if ($this->fileInfo['error'] == UPLOAD_ERR_NO_FILE) { if ($this->required) { return $this->container->errors[$this->ref] = jForms::ERRDATA_REQUIRED; } } else { if ($this->fileInfo['error'] == UPLOAD_ERR_NO_TMP_DIR || $this->fileInfo['error'] == UPLOAD_ERR_CANT_WRITE) { return $this->container->errors[$this->ref] = jForms::ERRDATA_FILE_UPLOAD_ERROR; } if ($this->fileInfo['error'] == UPLOAD_ERR_INI_SIZE || $this->fileInfo['error'] == UPLOAD_ERR_FORM_SIZE || $this->maxsize && $this->fileInfo['size'] > $this->maxsize) { return $this->container->errors[$this->ref] = jForms::ERRDATA_INVALID_FILE_SIZE; } if ($this->fileInfo['error'] == UPLOAD_ERR_PARTIAL || !is_uploaded_file($this->fileInfo['tmp_name'])) { return $this->container->errors[$this->ref] = jForms::ERRDATA_INVALID; } if (count($this->mimetype)) { $this->fileInfo['type'] = \Jelix\FileUtilities\File::getMimeType($this->fileInfo['tmp_name']); if ($this->fileInfo['type'] == 'application/octet-stream') { // let's try with the name $this->fileInfo['type'] = \Jelix\FileUtilities\File::getMimeTypeFromFilename($this->fileInfo['name']); } if (!in_array($this->fileInfo['type'], $this->mimetype)) { return $this->container->errors[$this->ref] = jForms::ERRDATA_INVALID_FILE_TYPE; } } } return null; }
public function getfile() { $module = $this->param('targetmodule'); if (!jApp::isModuleEnabled($module) || jApp::config()->modules[$module . '.access'] < 2) { throw new jException('jelix~errors.module.untrusted', $module); } $dir = jApp::getModulePath($module) . 'www/'; $filename = realpath($dir . str_replace('..', '', $this->param('file'))); if (!is_file($filename)) { $rep = $this->getResponse('html', true); $rep->bodyTpl = 'jelix~404.html'; $rep->setHttpStatus('404', 'Not Found'); return $rep; } $rep = $this->getResponse('binary'); $dateModif = new DateTime(); $dateModif->setTimestamp(filemtime($fileName)); if ($rep->isValidCache($dateModif)) { return $rep; } $rep->doDownload = false; $rep->fileName = $filename; $rep->mimeType = \Jelix\FileUtilities\File::getMimeTypeFromFilename($rep->fileName); return $rep; }
/** * get the MIME Type of a file, only with its name * * @param string $fileName the file name * @return string the MIME type of the file * @since 1.1.10 */ public static function getMimeTypeFromFilename($fileName) { $mimetype = File::getMimeTypeFromFilename($fileName); if ($mimetype == 'application/octet-stream' && jApp::config() && isset(jApp::config()->mimeTypes[$ext])) { return jApp::config()->mimeTypes[$ext]; } return $mimetype; }