base64上传图片,并且限制上传图片大小,


    /***
     * @param $file_data
     * @return bool|false|string
     * 判断base64文件大小,以及格式
     */
    public function upimgbase64($file_data)
    {

        if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file_data, $result)) {
            //处理base64字符串
            $img_base64 = str_replace($result[1], '', $file_data);
            $img_base64 = str_replace('=', '', $img_base64);
            //判断文件大小
            $img_len = strlen($img_base64);
            $file_size = $img_len - ($img_len / 8) * 2;
            $file_size = number_format(($file_size / 1024), 2).'kb';
            if ($file_size > (1024 * 1024 * 100)){
                $result['code'] = 0;
                $result['msg'] = '上传文件过大!';
                return \json_encode($result);
            }
            return true;
        } else {
            $result['code'] = 0;
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ThinkPHP框架中,将Base64编码的图片转换为二进制数据并上传到服务器通常涉及以下几个步骤: 1. 获取Base64编码的图片数据: 首先,从用户提交的数据中获取Base64编码的图片内容,这通常是在表单字段或API请求体中的一个键值对。 ```php $base64Image = $_POST['image_base64']; // 假设这是用户提交的Base64字符串 ``` 2. 解码Base64: 使用PHP内置的`base64_decode`函数将字符串解码为二进制数据。 ```php $binaryImage = base64_decode($base64Image); ``` 3. 创建临时文件: 为了上传到服务器,需要先将解码后的二进制数据写入一个临时文件,以便后续处理。 ```php $uploadDir = 'path/to/your/upload/directory'; // 定义上传目录 $tempFile = tempnam($uploadDir, 'img'); // 创建临时文件名 file_put_contents($tempFile, $binaryImage); // 写入二进制数据到临时文件 ``` 4. 配置上传参数: 设置上传配置,比如文件类型、大小限制等。在ThinkPHP的配置文件或控制器中,你可以配置上传器。 ```php // 在控制器或ThinkPHP的配置文件中 $config = [ 'max_size' => '10M', // 设置最大上传大小 'save_path' => $uploadDir, // 上传文件保存路径 ]; $uploader = new \Think\Upload\Upload($config); // 初始化上传器 ``` 5. 上传文件: 调用上传器的`upload()`方法,将临时文件上传到服务器。 ```php $uploadInfo = $uploader->upload($tempFile); // 上传文件到指定路径 if ($uploadInfo['code'] === 0) { // 成功上传,$uploadInfo['file']['url']会返回上传后文件的URL $filePath = $uploadInfo['file']['url']; } else { // 处理上传失败 echo "上传失败: " . $uploadInfo['message']; } ``` 6. 删除临时文件(可选): 为了保持服务器空间整洁,一般在上传成功后删除临时文件。 ```php unlink($tempFile); // 如果不需要保留临时文件,这里删除 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值