如何使用PHP将base64解码后的图像保存到文件系统中?

9

我通过POST请求从我的Web服务接收到一个Base64编码的JPEG字符串。我想要解码它并将其保存在文件系统中。如何使用PHP 5.3实现这一点?我已经成功地使用base64_decode函数解码了数据。

我该如何将这个解码后的字符串保存为服务器上的JPEG图像?

提前致谢。


你尝试使用fopen将其保存为二进制文件了吗? - Arfeen
@Arfeen 谢谢,我试了一下 file_put_contents(),成功了。我来这里更新我的问题,看到了你和 Lawrence Cherone 的评论。 - Amit
作为一种更加灵活和强大的通用解决方案,PHP-FileUpload 提供了 Base64UploadDataUriUpload 两种方式,这些方式在此处有详细说明 - caw
2个回答

13

如果您确定图像将始终为jpg格式,则可以简单地使用:file_put_contents();

<?php 
$decoded=base64_decode($encodedString);

file_put_contents('newImage.JPG',$decoded);
//leave it to you to randomize the filename.
?>

非常感谢。它有效了。但是不能保证它总是JPEG格式的。我会尝试从MIME类型中获取它。 :) 感谢您的帮助! - Amit

8

如果数据是由canvas.toDataURL()函数生成的,将空格替换为+号是必需的。

 $encodedString = str_replace(' ','+',$encodedString);

查看这个问题

在我的情况下,它帮了很大的忙。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接