/** * Reads a MIME file and creates a SavedMessage model from it. * * @param string $path Relative path from file_storage_path or tmpdir where the MIME file is stored * @param bookean $isTempFile Indicates if path it relative from tmpdir or file_storage_path * @return SavedMessage */ public function createFromMimeFile($path, $isTempFile = false) { $fullPath = $isTempFile ? \GO::config()->tmpdir . $path : \GO::config()->file_storage_path . $path; $file = new \GO\Base\Fs\File($fullPath); if (!$file->exists()) { throw new \Exception("E-mail message file does not exist!"); } $mimeData = $file->contents(); return $this->createFromMimeData($mimeData); }
protected function beforeSubmit(&$response, &$model, &$params) { if (isset($_FILES['attachments']['tmp_name'][0]) && is_uploaded_file($_FILES['attachments']['tmp_name'][0])) { $file = new \GO\Base\Fs\File($_FILES['attachments']['tmp_name'][0]); $fileWithName = new \GO\Base\Fs\File($_FILES['attachments']['name'][0]); $model->content = $file->contents(); $model->extension = $fileWithName->extension(); } return parent::beforeSubmit($response, $model, $params); }
protected function actionHandleUploads($params) { if (!isset(\GO::session()->values['files']['uploadqueue'])) { \GO::session()->values['files']['uploadqueue'] = array(); } try { $chunkTmpFolder = new \GO\Base\Fs\Folder(\GO::config()->tmpdir . 'juploadqueue/chunks'); $tmpFolder = new \GO\Base\Fs\Folder(\GO::config()->tmpdir . 'juploadqueue'); $tmpFolder->create(); $chunkTmpFolder->create(); $count = 0; while ($uploadedFile = array_shift($_FILES)) { if (isset($params['jupart'])) { $originalFileName = $uploadedFile['name']; $uploadedFile['name'] = $uploadedFile['name'] . '.part' . $params['jupart']; $chunkTmpFolder->create(); \GO\Base\Fs\File::moveUploadedFiles($uploadedFile, $chunkTmpFolder); if (!empty($params['jufinal'])) { $file = new \GO\Base\Fs\File($tmpFolder . '/' . $originalFileName); $fp = fopen($file->path(), 'w+'); for ($i = 1; $i <= $params['jupart']; $i++) { $part = new \GO\Base\Fs\File($chunkTmpFolder . '/' . $originalFileName . '.part' . $i); fwrite($fp, $part->contents()); $part->delete(); } fclose($fp); $chunkTmpFolder->delete(); } else { echo "SUCCESS\n"; return; } } else { $files = \GO\Base\Fs\File::moveUploadedFiles($uploadedFile, $tmpFolder); if (!$files) { throw new \Exception("No file received"); } $file = $files[0]; } $subdir = false; if (!empty($params['relpathinfo' . $count]) && !isset($params['jupart']) || !empty($params['relpathinfo' . $count]) && isset($params['jupart']) && !empty($params['jufinal'])) { $fullpath = \GO::config()->tmpdir . 'juploadqueue' . '/' . str_replace('\\', '/', $params['relpathinfo' . $count]); $dir = new \GO\Base\Fs\Folder($fullpath); $dir->create(); $subdir = true; $file->move($dir); } $count++; if ($subdir) { $parent = $this->_findHighestParent($dir); \GO::debug($parent); if (!in_array($parent->path(), \GO::session()->values['files']['uploadqueue'])) { \GO::session()->values['files']['uploadqueue'][] = $parent->path(); } } else { \GO::session()->values['files']['uploadqueue'][] = $file->path(); } } } catch (\Exception $e) { echo 'WARNING: ' . $e->getMessage() . "\n"; } echo "SUCCESS\n"; }