/** * @param array $uploaderConfig * @param array $fileConfig * @return \app\file\models\File[] * @throws \yii\base\InvalidConfigException */ public function upload($uploaderConfig = [], $fileConfig = []) { /** @var BaseUploader $uploader */ $uploader = \Yii::createObject(ArrayHelper::merge(['class' => empty($_FILES) ? '\\app\\file\\uploaders\\PutUploader' : '\\app\\file\\uploaders\\PostUploader', 'destinationDir' => $this->filesRootPath, 'maxFileSize' => $this->fileMaxSize], $uploaderConfig)); if (!$uploader->upload()) { return ['errors' => $uploader->getFirstErrors()]; } $files = []; foreach ($uploader->files as $item) { $file = new File(); $file->attributes = ArrayHelper::merge($fileConfig, ['uid' => $item['uid'], 'title' => $item['title'], 'fileName' => $item['name'], 'fileMimeType' => $item['type'], 'fileSize' => $item['bytesTotal']]); if (!$file->save()) { return ['errors' => $uploader->getFirstErrors()]; } $files[] = $file; } return $files; }