本地用C++对一个图片进行base64编码,经过post提交到web服务器上,php经过base64_decode解码后,保存后,图片并不正确。用16进制编辑器查看并对比源文件(本地源文件图片),发现保存后丢失了
0d
--回车符。过程经历的问题,经过post传输_POST['data']取出来的数据对比之前的base64编码的数据+号变成了空格,用php的
str_replace(...)
替换回原来的,可以确定这个没有问题。经过
$img = base64_decode(...)
解码后,返回的strlen($img)
的长度和源文件的长度是一样的。无论是用for(...) fwrite(...);
还是file_put_contents(...)
都是丢失字节0d
你在web端直接输出这个图片看看是否能正常显示呢,类似<img src="data:image/png;base64,这里是base64码" />