php Base64 图片上传 以及安全校验

public function uploaBase64(){
    $aData = $this->input->post('imgStr');
    if ($aData == '' || $aData == 'undefined') {
        return json_response(0,'参数错误');
    }

    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $aData, $result)) {
        $base64_body = substr(strstr($aData, ','), 1);
        empty($aExt) && $aExt = $result[2];
    } else {
        $base64_body = $aData;
    }

    if(!in_array($aExt,array('jpg','gif','png','jpeg'))){
        return json_response(0,'非法操作,上传照片格式不符。');
    }
    $hasPhp=base64_decode($base64_body);
    if (strpos($hasPhp, '<?php') !==false) {
        return json_response(0,'非法操作');
    }
    $img = base64_decode($aData);
    $date = date('Y-m-d');
    $saveName = uniqid();
    $savePath = './uploads/' . $date . '/';

    $path = $savePath . $saveName . '.' . $aExt;
    if(!is_dir($savePath)){
        mkdir($savePath, 0777, true);
    }
    $data = base64_decode($base64_body);
    $rs = file_put_contents($path, $data);


    if ( !$rs)
    {
        return json_response(-1,'上传失败');
    }else{
     return json_response(1,$path);
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注