pendalf89\filemanager\models\Mediafile::saveUploadedFile PHP Method

saveUploadedFile() public method

Save just uploaded file
public saveUploadedFile ( array $routes, boolean $rename = false ) : boolean
$routes array routes from module settings
$rename boolean
return boolean
    public function saveUploadedFile(array $routes, $rename = false)
    {
        $year = date('Y', time());
        $month = date('m', time());
        $structure = "{$routes['baseUrl']}/{$routes['uploadPath']}/{$year}/{$month}";
        $basePath = Yii::getAlias($routes['basePath']);
        $absolutePath = "{$basePath}/{$structure}";
        // create actual directory structure "yyyy/mm"
        if (!file_exists($absolutePath)) {
            mkdir($absolutePath, 0777, true);
        }
        // get file instance
        $this->file = UploadedFile::getInstance($this, 'file');
        //if a file with the same name already exist append a number
        $counter = 0;
        do {
            if ($counter == 0) {
                $filename = Inflector::slug($this->file->baseName) . '.' . $this->file->extension;
            } else {
                //if we don't want to rename we finish the call here
                if ($rename == false) {
                    return false;
                }
                $filename = Inflector::slug($this->file->baseName) . $counter . '.' . $this->file->extension;
            }
            $url = "{$structure}/{$filename}";
            $counter++;
        } while (self::findByUrl($url));
        // checks for existing url in db
        // save original uploaded file
        $this->file->saveAs("{$absolutePath}/{$filename}");
        $this->filename = $filename;
        $this->type = $this->file->type;
        $this->size = $this->file->size;
        $this->url = $url;
        return $this->save();
    }

Usage Example

 /**
  * Provides upload file
  * @return mixed
  */
 public function actionUpload()
 {
     Yii::$app->response->format = Response::FORMAT_JSON;
     $model = new Mediafile();
     $routes = $this->module->routes;
     $rename = $this->module->rename;
     $model->saveUploadedFile($routes, $rename);
     $bundle = FilemanagerAsset::register($this->view);
     if ($model->isImage()) {
         $model->createThumbs($routes, $this->module->thumbs);
     }
     $response['files'][] = ['url' => $model->url, 'thumbnailUrl' => $model->getDefaultThumbUrl($bundle->baseUrl), 'name' => $model->filename, 'type' => $model->type, 'size' => $model->file->size, 'deleteUrl' => Url::to(['file/delete', 'id' => $model->id]), 'deleteType' => 'POST'];
     return $response;
 }