DefaultController.php 2.6 KB
<?php

namespace app\wx\modules\user\controllers;


use Yii;
use common\helpers\ImageManager;
use stdClass;

/**
 * 控制器
 */
class DefaultController extends BaseController
{

    /**
     * 首页
     */
    public function actionIndex()
    {
        $params = ['isGuest' => Yii::$app->getUser()->isGuest];
        return $this->render('index', $params);
    }

    /**
     * 上传文件
     * @return string
     */
    public function actionUploadFile()
    {
        $e = new stdClass();
        $e->success = false;
        $e->message = 'ok';
        $userId = 0;

        if (isset($_POST["uploadType"]) && 'base64' == $_POST["uploadType"]) {
            $e = $this->uploadFileStr();
        } else {
            $e = $this->uploadFile();
        }
        return $this->renderJson($e);
    }

    private function uploadFile()
    {
        $e = new stdClass();
        $e->success = false;
        $e->message = 'ok';

        if (empty($_FILES["file"])) {
            $e->message = '文件为空';
            return $e;
        }

        if (empty($_FILES["file"]['tmp_name'])) {
            $e->message = '文件为空';
            return $e;
        }
        $type = $_FILES["file"]["type"];
        $typeArr = explode('/', $type);
        if ('image' !== $typeArr[0]) {
            $e->message = '只能上传 png, jpg 等文件';
            return $e;
        }

        $uploadInfo = ImageManager::uploadImg($_FILES["file"]);
        $filename = $uploadInfo[0];
        $tmpUrl = $this->site->base_url.'/'.$uploadInfo[2];
        $tmpMinFile = $this->site->base_url.'/'.$uploadInfo[3];

        $e->success = true;
        $e->tmpFile = $filename;
        $e->tmpMinUrl = $tmpMinFile;
        $e->tmpUrl = $tmpUrl;
        $e->message = 'ok';

        return $e;
    }

    private function uploadFileStr()
    {
        $e = new stdClass();
        $e->success = false;
        $e->message = 'fail';
        $e->tmpFile = '';
        $e->tmpMinUrl = '';
        $e->tmpUrl = '';
        $imgData = $this->request->post("file");
        $imgData = str_replace('data:image/jpeg;base64,', '', $imgData);
        $imageStr = base64_decode($imgData);
        if ($imageStr) {
            $uploadInfo = ImageManager::saveBase64ImgFileToLocal($imageStr);
            $filename = $uploadInfo[0];
            $tmpUrl = $this->site->base_url.'/'.$uploadInfo[2];
            $tmpMinFile = $this->site->base_url.'/'.$uploadInfo[3];

            $e->success = true;
            $e->tmpFile = $filename;
            $e->tmpMinUrl = $tmpMinFile;
            $e->tmpUrl = $tmpUrl;
            $e->message = 'ok';
        }

        return $e;
    }
}