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日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境