PHP:在JSON中以二进制形式传输图像



伙计们,

我需要将大量文件从一台服务器传输到另一台服务器,作为我正在构建的应用程序的一种"更新/重新安装过程"。

到目前为止,这些文件是由主服务器通过FTP推送的。这很好,但我想摆脱存储客户端的FTP信息,并想将push方法变成pull方法。因此,客户端单击"更新",客户端服务器就会接收到这些文件。

我一直在研究Phar、Zip和其他打包文件的方法,但它们需要扩展名,我希望我的应用程序尽可能至少依赖于扩展名。

所以我采用了JSON来传输文件。主/源服务器将所有文件打包在一个JSON数组中,并根据请求将其发送到客户端服务器,客户端服务器循环处理这些文件并保存它们。它非常适用于PHP、JavaScript等,但有些图像在这个过程中被损坏。

我怀疑这是因为数据是以ASCII而不是二进制传输的,因为我在使用FTP构建安装时遇到了同样的问题,当我转向二进制传输而不是ASCII时,图像不再损坏。

这里有人有一个解决方案,使图像传输不损坏吗?我使用file_get_contents,并在其他项目中使用过它来打开和保存图像数据,所以我知道函数可以处理它。我怀疑JSON需要做一些额外的编码或类似的事情来正确传输图像内容?

提前感谢

试试base64。这是用php传输二进制数据的最简单方法。