PHP图片上传

model(模型)层:

public static function uploadFileNew($file, $params = array()) {
        $path = $params['path'];   //上传文件路径
//        $fileType = [];//$params['fileType'];

        $rootPath = '';

        //创建目录
        if(!file_exists($rootPath.$path)) {
            Upload::mkdirs($rootPath.$path);
        }

        if(!is_uploaded_file($file['tmp_name'])) {
            return Upload::runArray('0', '文件不存在');   //是否存在文件
        }

        //获取文件名相关信息
        $fileInfo = pathinfo($file["name"]);

        //获取文件扩展名(后缀)
        $fileSuffix = $fileInfo['extension'];

        //检查文件类型
//        if(!in_array($fileSuffix, $fileType)) {
//            return $this->runArray('0', '文件类型不符');
//        }

        //以时间戳命名新文件
        $newName = isset($params['newName']) && !empty($params['newName']) ? $params['newName'] : '';
        if(empty($newName)) {
            $newName = time().Upload::createRandString(6);
        }

        //检查是否有同名文件
        if(file_exists($path.$newName.".".$fileSuffix)) {
            $newName = $newName."_".Upload::createRandString(6);
        }

        //获取临时文件名
        $tmpName = $file["tmp_name"];

        //最终上传路径.文件名
        $filePath = $path.$newName.'.'.$fileSuffix;


        $savedName = $newName.'.'.$fileSuffix;
        //上传,并返回信息
        if(move_uploaded_file($tmpName, $filePath)) {
            return Upload::runArray('1', '上传成功',$savedName);
        } else {
            return Upload::runArray('0', '移动出错');
        }
    }

    /**
     * 创建目录
     * @param unknown $dir
     * @param number $mode
     * @return boolean
     */
    public static function mkdirs($dir, $mode = 0744){
        if (is_dir($dir) || @mkdir($dir, $mode)) {
            return TRUE;
        }
        if (!Upload::mkdirs(dirname($dir), $mode)) {
            return FALSE;
        }
        return @mkdir($dir, $mode);
    }

    /**
     * 信息返回
     * @param unknown $state
     * @param unknown $msg
     * @return multitype:unknown
     */
    public static function runArray($code, $msg, $arr = array()){
        return array('code' => $code, 'msg' => $msg, 'params' => $arr);
    }

    /**
     * 随机字符串
     * @param int $length
     * @return string
     */
    public static function createRandString($length = 32) {
        $str = array_merge(range('a','z'),range('A','Z'),range(0,9));
        shuffle($str);
        $str = implode('',array_slice($str,0,$length));
        return $str;
    }

    /**
     * @param string $state success fail
     * @param string $msg   msg
     * @param string $params
     */
    public static function runJson($code = 10000, $msg = '', $item = ''){
        $json = array();
        if($msg){$json['msg'] = $msg;}
        if($item){
            $json['data'] = $item;
        }
        $json['code'] = $code;
        echo json_encode($json,JSON_UNESCAPED_UNICODE);exit;
    }

 

控制器层:

    public function actionUpload()
    {
        $code    = DictConstant::SYSTEM_ERROR_STATUS;
        $message = DictConstant::SYSTEM_ERROR_MESSAGE;
        $data    = [];
        try {
            $datePath = 'upload/'.date('Y-m-d',time()).'/';
            $paramsArr = [
                'path' => __DIR__.'/../web/'.$datePath,
                'fileType' => ['jpg','png'],
                'newName' => time(),
            ];
            $para = Upload::uploadFileNew($_FILES["images"], $paramsArr);
            if($para['code'] == 1) {
                $data['image'] ='https://'.$_SERVER['SERVER_NAME'].'/'.$datePath.$para['params'];
                Upload::runJson(1000, 'upload success', ['imgUrl' => $imgUrl]);
            } else {
                Upload::runJson(9000, 'upload fail');
                $data['image'] = '图片上传失败';
            }

            $code    = DictConstant::SUCCESS_STATUS;
            $message = DictConstant::SUCCESS_MESSAGE;
            return ['resultCode' => $code, 'message' => $message, 'data' => $data];
        } catch ( \Exception $e ) {
            Yii::error(exceptionFormat($e), 'runException');
            return ['resultCode' => $code, 'message' => $message, 'data' => []];
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值