无法在php中从iphone处理base64

时间:2014-10-21 14:21:39

标签: php ios iphone base64

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

我用来将base64转换为文件的php代码是:

file_put_contents($filename, base64_decode($data));

android正常工作的文件, iphone的文件处于损坏状态

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

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

以下是两者的base64字符串:

来自android的基础64:

iVBORw0KGgoAAAANSUhEUgAAAAoAAAANCAYAAACQN/8FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAK
T2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AU
kSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXX
Pues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgAB
eNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAt
AGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3
AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dX
Lh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+
5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk
5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd
0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA
4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzA
BhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/ph
CJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5
h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+
Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM
WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQ
AkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+Io
UspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdp
r+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZ
D5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61Mb
U2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY
/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllir
SKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79u
p+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6Vh
lWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1
mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lO
k06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7Ry
FDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3I
veRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+B
Z7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/
0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p
DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5q
PNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIs
OpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5
hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQ
rAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9
rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1d
T1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aX
Dm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7
vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3S
PVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKa
RptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO
32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21
e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfV
P1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i
/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8
IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq
YAAAOpgAABdvkl/FRgAAAaJJREFUeNp00LFOU1EcgPHvnJ6WUhotJRAlBnwAB2lQWUwHdXJ08jU0
8QEwcXDiJZycdNGYqCHoUqk1qDFgWJi0tLG2955777nnnL8Ds1/ye4FPff1+dKdaNU+11is1Y+J8
3RB8YJY5vA8aGIrIIyMi28DVilJUjeJoFAkhsNaEIBFXhlVBto33ZcNUFLpa4fFHxY+RooyGK0uK
B50S70t8CAumdC6eq1d4f6LYPYGX9zyZh7vPK2xdMHRaniQvgi4KhwTP4BdsXhTmxNLSlo2VyOEY
YunIsgydFzk2z1mulxyOQUQoQuR4omjXcpLUYq3FWJsy1nBzucKL4xoPdxu4CO2aY6M54vTPjKxw
mCRJkSg0fcmTjqN32qAoCjZXJ0zGE6ZJjogYk2e5nqvWSKxiPvylu2SxNmU0SSmcx3uPc27PFM7Z
3qceBwdf9kDNlKIBqBCCiVF+r69ffnXt+o1nZjqdvu7397fevX2zA3wALgEt4DzwU2v9bTDYxyRJ
soPIWnOhOUnSZAgMOUsBxBgZfO6f7eh2b91fXGzfFhH+598ATdr+HZOwwo0AAAAASUVORK5CYII=

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

2 个答案:

答案 0 :(得分:3)

在iOS中我遇到了同样的问题,但是不同位大小文件的问题是另一回事。

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

像这样:

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

答案 1 :(得分:1)

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

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

来自iPhone"来自" Base 64的解码图像是图像:enter image description here,文件大小为528字节。

来自" Base 64的解码图像来自android"是图像:enter image description here,文件大小为3191字节。

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

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

来自较小档案的EXIF:
---- ExifTool ---- ExifTool版本号: 9.70 ----系统---- 文件名: a.png 目录: /用户/担/桌面 文件大小: 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-- ----文件---- 文件类型: PNG MIME类型: 图像/ PNG ---- PNG ---- 图像宽度: 10 图像高度: 13 钻头深度: 8 颜色类型: RGB与Alpha 压缩: 减缩/膨胀 过滤: 自适应 交错: 逐行扫描 ----复合---- 图片尺寸: 10x13

来自大文件的EXIF信息:
---- ExifTool ---- ExifTool版本号: 9.70 ----系统---- 文件名: b.png 目录: /用户/担/桌面 文件大小: 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-- ----文件---- 文件类型: PNG MIME类型: 图像/ PNG ---- PNG ---- 图像宽度: 10 图像高度: 13 钻头深度: 8 颜色类型: RGB与Alpha 压缩: 减缩/膨胀 过滤: 自适应 交错: 逐行扫描 档案名称: 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 ---- PNG-pHYs ---- 每单位X的像素数: 2835 每单位像素Y: 2835 像素单位: 米 ---- ICC-header ---- 型材CMM类型: 利诺 档案版本: 2.1.0 档案类: 显示设备配置文件 色彩空间数据: RGB 配置连接空间: XYZ 档案日期时间: 1998:02:09 06:49:00 档案文件签名: ACSP 主要平台: 微软公司 CMM标志: 不嵌入,独立 设备制造商: IEC 设备型号: 的sRGB 设备属性: 反光,光面,正面,颜色 渲染意图: 介质相对比色 连接空间光源: 0.9642 1 0.82491 个人资料创建者: 生命值 个人资料ID: 0 ---- ICC_Profile ---- 档案版权: 版权所有(c)1998 Hewlett-Packard Company 简介描述: 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 http://www.iec.ch 设备型号说明: IEC 61966-2.1默认RGB色彩空间 - sRGB 查看条件: IEC61966-2.1中的参考观察条件 亮度: 76.03647 80 87.12462 技术: 阴极射线管显示器 红色再现曲线: (二进制数据2060字节,使用-b选项提取) 绿色色调再现曲线: (二进制数据2060字节,使用-b选项提取) 蓝色色调再现曲线: (二进制数据2060字节,使用-b选项提取) ---- ICC-view ---- 查看Cond光源: 19.6445 20.3718 16.8089 查看Cond Surround: 3.92889 4.07439 3.36179 查看Cond光源类型: D50 ---- ICC-meas ---- 测量观察员: CIE 1931 测量支持: 0 0 0 测量几何: 未知 测量耀斑: 0.999% 测量光源: D65 ----复合---- 图片尺寸: 10x13