PHP图片上传,base64转图片存储

图片上传,前端VUE,传到后台的直接是base64的编码图片,反编译后将图片存储至服务器,返回图片地址.


 public function uploads(){
         $logo_data = $this->request->post('logo_base64','');
         //$logo_data = $_POST['logo_base64'];
         
         if(!empty($logo_data)){
             //$data = file_get_contents('./1.txt');
            $reg = '/data:image\/(\w+?);base64,(.+)$/si';
             preg_match($reg,$logo_data,$match_result);
 
            $file_name = time().'.'.$match_result[1];
             
             $logo_path = WEB_PATH.'/uploads/logo/'.$file_name;
             $num = file_put_contents($logo_path,base64_decode($match_result[2]));
            
            
            if(!empty($num)){
                 //上传成功之后,再进行缩放操作
                //$image = \think\Image::open($logo_path);
                
                // 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.png
                 //$image->thumb(102, 36)->save($logo_path);
                 
                 $result = ['code'=>200,'msg'=>'ok'];
             }else{
                 $result = ['code'=>100,'msg'=>'no'];
            }
         }else{
             $result = ['code'=>100,'msg'=>'参数错误'];
         }
         return ajax($result);
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ThinkPHP5框架中,将Base64编码的图片换为二进制数据并上传到服务器通常涉及以下几个步骤: 1. **解码Base64**: 首先,你需要从用户提交的数据中提取Base64编码的图片字符串。这通常是通过`$_POST`或`$_GET`变量获取。然后使用PHP内置的`base64_decode`函数将其解码为字节流。 ```php $base64String = $_POST['image']; $decodedImage = base64_decode($base64String); ``` 2. **创建临时文件**: 将解码后的字节流保存到一个临时文件,以便后续处理。你可以使用`tempnam`或`file_put_contents`函数创建临时文件。 ```php $uploadDir = 'path/to/upload/directory'; $tempFile = tempnam($uploadDir, 'temp_'); file_put_contents($tempFile, $decodedImage); ``` 3. **设置文件名和路径**: 你可能需要给上传的文件命名,并设置完整的服务器路径。如果文件名已经存在,你可能需要加上时间戳或其他后缀避免冲突。 ```php $filename = 'new_image.jpg'; // 用户指定或自动生成 $finalPath = $uploadDir . '/' . $filename; rename($tempFile, $finalPath); ``` 4. **验证和存储**: 在实际生产环境中,别忘了检查文件是否上传成功,大小是否超过限制,以及类型是否安全。你可以使用`move_uploaded_file`或者`copy`函数将文件移动到最终目的地。 5. **删除临时文件**: 上传成功后,记得删除临时文件,以释放系统资源。 ```php unlink($tempFile); ``` 如果你需要在控制器或模型中执行这个操作,你可以封装这些步骤为一个方法,方便复用。下面是大致的代码示例: ```php class UploadController extends Controller { public function handleBase64ImageUpload(Request $request) { // ... (上面的代码) if (move_uploaded_file($tempFile, $finalPath)) { echo "上传成功"; } else { echo "上传失败"; } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值