【发布时间】:2014-09-22 13:22:58
【问题描述】:
我的问题:
我正在使用 PHP 将上传的 base64 字符串保存到文件中。此字符串来自 iPhone 应用程序,是一个 base64 编码的 jpeg 文件。
当我将该文件的内容手动添加到图像标签中的数据源中时,它会正确显示。当我使用 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
- 使用 FASTCGI 的 PHP 版本是 5.3.8
- 操作系统是 Windows 2008 R2
- Web 服务器是 IIS 7.5
感谢任何帮助。
【问题讨论】:
-
你能贴出编码和保存数据的代码吗?
-
如果您指的是 iPhone 代码,不,我无权访问它。如果有帮助,我可以发布 base64 编码的文件吗?
-
好的,已编辑 - 添加了指向 base64 编码文件的链接。
-
@onetrickpony - 请输入带有该建议的答案,这是正确的并解决了我的问题。如此愚蠢的事情不容错过。谢谢。