我的问题:
我使用PHP将上传的base64字符串保存到文件中。此字符串来自iPhone应用程序,是一个base64编码的jpeg文件。
当我获取此文件的内容并将其手动添加到图像标记中的数据src时,它显示正确。当我使用file_get_contents读取它并将结果字符串添加到img数据标记时,它的工作正常。
我的问题:当我使用file_get_contents读取文件并使用base64_decode()保存结果时,生成的jpeg文件为 INVALID 。
我的问题是,为什么明显有效的base64编码字符串在解码和保存时不会产生有效的JPEG文件?
一些来源摘录:
这应该起作用,输出图像:
$imagepath = "D:\\path\\to\\image\\mybase64image.txt";
$imagecontent = file_get_contents($imagepath);
header("Content-type:text/html");
$d = '<img alt="" src="data:image/jpeg;base64,' . $imagecontent . '"/>';
echo $d;
这不起作用且文件无效:
$imagepath = "D:\\path\\to\\image\\mybase64image.txt";
$imagecontent = file_get_contents($imagepath);
file_put_contents('img.jpg', base64_decode($imagecontent));
- img.jpg是一个无效的文件。 路径是有效的,文件在那里,权限也存在(生成的文件img.jpg是一个二进制文件,只是无效),正如我所说,它作为数据src。
这是base64编码文件:
http://www.mailnet.de/7E072017-DAEB-41E1-B02E-23FB51A05B80.txt
感谢任何帮助。
答案 0 :(得分:1)
%
个字符。看起来你的字符串是url编码的。 urldecode()
之前将其传递给base64_decode()
。
它在浏览器中工作,因为它们总是解码url属性。