Dinowritecode 2023-01-28 00:00 采纳率: 60%
浏览 38
已结题

ajax传值出现问题

我想做一份头像上传功能,前端用户裁剪好头像以后会返回base64格式的,但是我不想把base64格式的存入数据库,想把它转成png图片,但是程序写好了,就是出了问题,我把base64传回给后端PHP用的是jQuery的ajax,用post方式传递,类型为json,这个前端的base64保证没问题,我直接赋值给php文件中的变量可以转成图片,但是经过ajax传值后返回的数值转成图片就成了这个样子

img


我把ajax传值返回的base64亲手又赋值给php变量,结果也是那样,总得来说,就是ajax传值以前的数据能正常转成图片,传值以后的就无了,下面是我的代码。
前端js:


```javascript
 urlname = res.url  //这个urlname就是前端的base64编码的图片
        $.ajax({
            type:'post',
            url:'php/face.php',
            dataType:'json',
            data:'url=' + urlname,
            success:function(res){
                console.log(res.result)
            }
        })

后端PHP:
```php
<?php
$imgbase64 = $_POST['url']; //url就是前端图片的base64字符串
$info = explode(',',$imgbase64);
if($info[0] == 'data:image/png;base64'){
    upa($info[1]);

}else{
    echo 'no';
}
function upa($str){
    $pic = base64_decode($str);
    if($pic === false) exit('失败');
        $path = './'; //保存位置
        $picname = '1.png';   //文件名及文件尾缀
    if(file_put_contents($path.$picname,$pic)){
        exit('success');
    }else{
        exit('fail');
    }
}
$img['result'] = $imgbase64;
echo json_encode($img);
?>

求解决(╥╯^╰╥)

  • 写回答

3条回答 默认 最新

  • 有一只小精灵 2023-01-28 09:06
    关注

    在对图片进行base64编码的时候会加入前缀字符串,编码内会加入这些字符(data:image/png;base64,) ,解码之前需要先去掉这一串字符。

        function upa($str)
        {
            $path = './'; //保存位置
            $picname = '1.png';   //文件名及文件尾缀
    
            $match = preg_match('/^(data:\s*image\/(\w+);base64,)/', $str, $result);
            if (!$match) {
                exit('失败');
            }
            $base64_image = str_replace($result[1], '', $str);
            if (file_put_contents($path . $picname, base64_decode($base64_image))) {
                exit('success');
            } else {
                exit('fail');
            }
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月6日
  • 已采纳回答 1月29日
  • 创建了问题 1月28日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料