无法在php中从iphone处理base64

无法在php中从iphone处理base64,php,ios,iphone,base64,Php,Ios,Iphone,Base64,一、 我使用base_64方法将文件从android/iphone设备发送到php服务器 我用于将base64转换为文件的php代码如下: file_put_contents($filename, base64_decode($data)); 来自android的文件工作正常,来自iphone的文件处于损坏状态 当我们比较来自两台设备的特定文件的base64编码字符串时,它会返回不同的输出,而来自iphone的字符串比来自android的字符串小得多 这就是问题吗?如果是,如何解决 以下是来自

一、 我使用base_64方法将文件从android/iphone设备发送到php服务器

我用于将base64转换为文件的php代码如下:

file_put_contents($filename, base64_decode($data));
来自android的文件工作正常,来自iphone的文件处于损坏状态

当我们比较来自两台设备的特定文件的base64编码字符串时,它会返回不同的输出,而来自iphone的字符串比来自android的字符串小得多

这就是问题吗?如果是,如何解决

以下是来自这两个数据库的base64字符串:

来自android的Base 64:

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
来自iphone的Base 64:

iVBORw0KGgoAAAANSUhEUgAAAAoAAAANCAYAAACQN/8FAAAAHGlET1QAAAACAAAAAAAAAAcAAAAoAAAABwAAAAYAAAFEmBTn/wAAARBJREFUKBUUzD1Lw0AAh/H7In4AcRQcBHFydXJ1FRdnd8FBCkIRJ7FTKZRaNKCgRWPSgk2rvWuS5u3yfpeL5FP8rcOz/XiI6/ODkGeMJ4Uqiko2TSPrSskoLqQXJMoLU/ZviONG0zVEmpZQlcJkVcOwBbI0h+9zLO1gnT8llK1sP+DI8xKn/Rr7t7/Yvalx0pMIQ46fhQNrTh0ym1OWhAE6psBmq0acSThcYuOyRkfPsKQUhmkxYk4sFnsuzvoCx10FkUYQSYTDuwrngwx0ZuH1TWdk9G4we/GNCy3FTluhTELEUYCtlsKV5mOs63h4fGbkSXthum7g84ti+1ri6F6sbwJ77RyjjzGGQw3d3oD9AQAA//9PvKCmAAAAyUlEQVRjWLJs1fn1G7b8371r9/+dB078b1596X/NktP/N2zd/X/VqtX/58xb/H/23EWXGebMXXRx9eoN/9dv2Pp/x/ad/w/t2/d/x5bN/5csXfF/7vwl/2fMmv9/0pSZ0ximTp9zvLSs6r+7h9chNw/vrR6e3vs9PL0OuLp5HHFycV+bmJyW0te3ipOhvbO/3snZ7T8DA0MQEIsBsREQOwFxIBDrADEElJd38Ds7u8zl4eEBSSIDRiAHhBHA3t4pUlhY2AUhgskCAHZCN1W9mev8AAAAAElFTkSuQmCC

我解码了Base64字符串并将结果保存为.png文件,结果如下:

注1:对初始字节的快速在线解码表明数据是PNG文件。
注2:我使用较大和较小的术语,因为Base64字符串似乎标记错误

“来自iPhone的Base 64”中的解码图像是图像:文件大小为528字节

来自“来自android的Base 64”的解码图像是图像:文件大小为3191字节

因此,它们都是相同图像的有效Base64表示形式,但来自不同的文件。较大的文件中包含更多的EXIF信息

注3:为了节省空间,您应该从应用程序中使用的图像文件中删除所有非图像信息

从较小文件退出:
----出口工具---- ExifTool版本号: 9.70 ----系统---- 文件名: a、 巴布亚新几内亚 目录: /用户/丹/桌面 文件大小: 582字节 文件修改日期/时间: 2014:10:21 11:23:17-04:00 文件访问日期/时间: 2014:10:21 11:31:55-04:00 文件索引节点更改日期/时间: 2014:10:21 11:23:28-04:00 文件权限: rw-r--r-- ----文件---- 文件类型: 巴布亚新几内亚 MIME类型: 图像/png ----巴布亚新几内亚---- 图像宽度: 10 图像高度: 13 位深度: 8. 颜色类型: 带Alpha的RGB 压缩: 放气/充气 过滤器: 适应的 交错: 无干扰 ----复合材料---- 图像大小: 10x13

较大文件中的EXIF信息:
----出口工具---- ExifTool版本号: 9.70 ----系统---- 文件名: b、 巴布亚新几内亚 目录: /用户/丹/桌面 文件大小: 3.1 kB 文件修改日期/时间: 2014:10:21 11:26:22-04:00 文件访问日期/时间: 2014:10:21 11:31:55-04:00 文件索引节点更改日期/时间: 2014:10:21 11:26:22-04:00 文件权限: rw-r--r-- ----文件---- 文件类型: 巴布亚新几内亚 MIME类型: 图像/png ----巴布亚新几内亚---- 图像宽度: 10 图像高度: 13 位深度: 8. 颜色类型: 带Alpha的RGB 压缩: 放气/充气 过滤器: 适应的 交错: 无干扰 配置文件名称: Photoshop ICC配置文件 白点X: 0.31269 白点Y: 0.32899 红色X: 0.63999 红色Y: 0.33001 绿色X: 0.3 绿色Y: 0.6 蓝色X: 0.15 蓝色Y: 0.05999 ----巴布亚新几内亚体育---- 每单位X的像素数: 2835 每单位Y的像素数: 2835 像素单位: 米 ----ICC标题---- 轮廓坐标测量机类型: 利诺 配置文件版本: 2.1.0 配置文件类别: 显示设备配置文件 颜色空间数据: RGB 配置文件连接空间: XYZ 配置文件日期时间: 1998:02:09 06:49:00 配置文件签名: acsp 主要平台: 微软公司 CMM标志: 不嵌入,独立 设备制造商: IEC 设备型号: sRGB 设备属性: 反光、光泽、正片、彩色 渲染意图: 介质相对比色法 连接空间光源: 0.9642 1 0.82491 配置文件创建者: 惠普 配置文件ID: 0 ----国际商会档案---- 个人资料版权: 版权所有(c)1998惠普公司 简介: sRGB IEC61966-2.1 媒体白点: 0.95045 1 1.08905 媒体黑点: 0 0 0 红色矩阵列: 0.43607 0.22249 0.01392 绿色矩阵列: 0.38515 0.71687 0.09708 蓝色矩阵列: 0.14307 0.06061 0.7141 设备制造说明: IEC 设备型号说明: IEC 61966-2.1默认RGB颜色空间-sRGB 查看条件说明: IEC61966-2.1中的参考观察条件 亮度: 76.03647 80 87.12462 技术: 阴极射线管显示器 红调再现曲线: (二进制数据2060字节,使用-b选项提取) 绿调再现曲线: (二进制数据2060字节,使用-b选项提取) 蓝色调再现曲线: (二进制数据2060字节,使用-b选项提取) ----国际商会观点---- 观察条件光源: 19.6445 20.3718 16.8089 查看条件环绕: 3.92889 4.07439 3.36179 观察条件光源类型: D50 ----国际商会多边环境协定---- 测量观察员: CIE 1931 计量支持: 0 0 0 测量几何: 不为人知 测量火炬: 0.999% 测量光源: D65 ----复合材料---- 图像大小:
10x13

在iOS中,我也有同样的问题,但不同位大小文件的问题是另一回事

对于base64encode,我替换enconde字符串中的“+”

像这样:

self.stringImageEnconded = [self.encodedImage stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];

android可能正在生成base64格式,用于MIME文档,例如电子邮件。您必须去掉换行符才能将其转换为一行字符串。@MarcB:对于android来说,它工作正常,那么iphone中的base64呢。。任何使用android.b64中相同方法的方法都是b64。忽略换行符,您应该从两个系统获得相同的b64数据,这意味着您正在编码的数据在两个系统上是不同的
ivBORw0K
是一个PNG文件头,这可能意味着PNG在内部具有不同的结构。可能是完全相同的图像,但元数据不同。请向我们展示在iOS中准备和发送base64请求的代码。让我们看看你在安卓系统中是如何做到这一点的。Base64是不同的,因为它的数据不同。带有断线的一个包含4257个字符(忽略断线字符),另一个包含777个字符。因此编码来自不同的来源。它们似乎都是PNG图像文件。在PHPME中,您使用哪种方法解码文件(是否使用php)使用了文件内容($filename,base64_decode($data));两者都适用——但android正在运行,而ios没有……也许php无法处理EXIF信息。保存不包含EXIF信息的文件。底线是不同的图像文件正在进行Base64编码。也许是安卓