コード例 #1
0
ファイル: UploadForm.php プロジェクト: bessonov87/bw
 /**
  * Загружает файл или изоображение
  *
  * Результаты загрузки записываются в массив _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);
                 }
             }
         }
     }
 }