/** * Загружает файл или изоображение * * Результаты загрузки записываются в массив _result и могут быть получены на странице загрузки с помощью метода * getResult() модели. * */ public function upload() { // Цикл по файлам, выбранным для загрузки foreach ($this->files as $file) { // Если файл - изображение if (getimagesize($file->tempName) !== false) { if ($imageFileName = $this->uploadImage($file)) { // Сохраняем в таблице images $image = new Images(); $image->image_name = $imageFileName; $image->folder = $this->folder; $image->post_id = $this->post_id; $image->user_id = $this->user_id; if (!$this->post_id) { $image->r_id = Yii::$app->request->cookies->getValue('r_id'); } $image->date = time(); // Сохраняем в базу. Если не удалось, пытаемся удалить изображения с диска if ($image->save()) { $this->_result[] = 'Изображение <strong>' . $file->name . '</strong> загружено'; } else { $this->_result[] = 'Не удалось сохранить изображение <strong>' . $file->name . '</strong> в базе данных'; $this->_result[] = $image->getErrors(); @unlink(Yii::getAlias('@frontend/web/uploads/') . $this->folder . '/' . $imageFileName); @unlink(Yii::getAlias('@frontend/web/uploads/') . $this->folder . '/thumbs/' . $imageFileName); } } } else { if ($fileName = $this->uploadFile($file)) { // Сохраняем в таблице images $uFile = new Files(); $uFile->name = $fileName; $uFile->folder = $this->_filesFolder; $uFile->post_id = $this->post_id; $uFile->user_id = $this->user_id; $uFile->size = filesize(Yii::getAlias($this->_baseUploadPathAlias) . $this->_filesFolder . '/' . $fileName); if (!$this->post_id) { $uFile->r_id = Yii::$app->request->cookies->getValue('r_id'); } // Сохраняем в базу. Если не удалось, пытаемся удалить файл с диска if ($uFile->save()) { $this->_result[] = 'Файл <strong>' . $file->name . '</strong> загружен'; } else { $this->_result[] = 'Не удалось сохранить файл <strong>' . $file->name . '</strong> в базе данных'; $this->_result[] = $uFile->getErrors(); @unlink(Yii::getAlias('@frontend/web/uploads/') . $this->_filesFolder . '/' . $fileName); } } } } }