Php 如何将base64字符串保存为映像服务器端

Php 如何将base64字符串保存为映像服务器端,php,base64,decode,Php,Base64,Decode,我想将base64字符串保存为服务器上的图像(.png或.jpg) 我得到的字符串如下所示: “数据:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQA[…]” 我试过这个: $data = $_POST['form_new_data']; list($type, $data) = explode(';', $data); list(, $data) = explode(',', $data); $data

我想将base64字符串保存为服务器上的图像(.png或.jpg)

我得到的字符串如下所示: “数据:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQA[…]”

我试过这个:

$data = $_POST['form_new_data'];
        list($type, $data) = explode(';', $data);
        list(, $data)      = explode(',', $data);
        $data = base64_decode($data);
        file_put_contents("/userImgs/pic.jpg",$data);
但它不起作用(可能是因为base64字符串是jpeg?)。。请帮助..

试试这个

$data = $_POST['form_new_data'];
file_put_contents('img.jpg', base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)));
试试这个

$data = $_POST['form_new_data'];
file_put_contents('img.jpg', base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)));

你忘了去掉前缀-在发布后进行预设置。现在好了,rt?谢谢,可以了,但是你能告诉我,为什么我的不行?我使用了此线程的公认答案中的代码:@georoot@user3375021坦率地说,我根本不知道为什么要使用explode。我想说,在将$data存储到文件之前,尝试在脚本中打印$data,并将其与我的脚本中preg_replace的输出进行比较。非常感谢。你忘了去掉前缀-在发布后进行预设置。现在好了,rt?谢谢,可以了,但是你能告诉我,为什么我的不行?我使用了此线程的公认答案中的代码:@georoot@user3375021坦率地说,我根本不知道为什么要使用explode。我想说,在将$data存储到文件之前,尝试在脚本中打印$data,并将其与我的脚本中preg_replace的输出进行比较。非常感谢。