public function actionUpload() { $newsID = preg_replace('/\\D+/', '', $_SERVER['HTTP_REFERER']); $news = News::findOne($newsID); $filename = $news ? $news->link . rand(0, 10000) : \Yii::$app->security->generateRandomString(); $file = UploadHelper::__upload($_FILES['file'], ['filename' => $filename]); $image = new Image(['userID' => \Yii::$app->user->id, 'newsID' => $newsID, 'link' => \Yii::$app->params['cdn'] . '/images/stories/' . $file]); $image->save(false); if (\Yii::$app->request->isAjax) { \Yii::$app->response->format = 'json'; return ['filelink' => $image->link, 'id' => "img{$image->id}"]; } return $image; }
public function ruleFile() { return [[['savedFile'], 'safe'], [['savedFile'], 'file', 'extensions' => ['jpg', 'gif', 'png', 'pdf', 'txt', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'zip'], 'maxSize' => UploadHelper::fileUploadMaxSize()], ['deleteFlag', 'boolean']]; }
/** * * simple way to upload image * */ public static function __upload($image, $options = []) { $options['directory'] = isset($options['directory']) && !empty($options['directory']) ? $options['directory'] : \Yii::getAlias('@frontend') . '/web/images/stories'; $options['imgsize'] = isset($options['imgsize']) && !empty($options['imgsize']) ? $options['imgsize'] : ''; $options['fullReturn'] = isset($options['fullReturn']) && !empty($options['fullReturn']) ? $options['fullReturn'] : false; $f = UploadHelper::factory($options['directory'], false); $f->file($image); if (isset($options['filename']) && !empty($options['filename'])) { preg_match('/\\.[0-9a-z]{1,5}$/', strtolower($f->file_post['name']), $matches); $f->filename = $options['filename'] . $matches['0']; } $f = $f->upload(); return $options['fullReturn'] ? $f : $f['filename']; }