【IOS 接收PHP 图片】
1,PHP将图片的URL直接返回给IOS端即可,IOS获取到URL处理,下载缓存就可以在APP端使用了。
【IOS上传图片PHP接收】
1、IOS上传图片可能有很多方法,今天作者我用了这种方法,通过IOS 提交NSData 数据,PHP接收并且处理后生成图片。
很多人会问,NSData 传过来是这样的:
1
|
<ffd8ffe0 00104a46
49460001
>
|
那么问题来了:这是什么数据类型?
答:”我开始也这么问,但是经过我查询了1天的资料,了解,他是16进制的编码,其实编程人员一看就知道。0-F,16进制编码,
但是我有点不太肯定,所以还是想去确认一下。搜索了1天的资料后,终于认同了。16进制的“
2、16进制,我们是不能直接写成图片的?
对啊,我们得将16进制转换成二进制,才能够写出去,再途中,不要复制出来。因为数据类型一旦复制到了TXT中。再进行,就有可能出错。编码这个问题。我是比较烦。
3、我们需要的就是查询自己语言16进制转成二进制的方法。
PHP中。有个方法。可以转成我们需要的二进制。方法详细查询去W3C pack()函数详细说明
1
|
$
byte
=pack(
"H*"
,$
byte
);
|
然后通过PHP写出文件就可以了。保存格式肯定是"png jpg 等图片格式";
注意:
1
|
<ffd8ffe0 00104a46
49460001
>
|
这个是NSData, 我们需要处理成:ffd8ffe000104a4649460001 然后进行转码
1
2
3
4
5
6
7
8
9
|
header(
"Content-Type: application/octet-stream"
);
$
byte
=$_POST[
'test'
];
$
byte
= str_replace(
' '
,
''
,$
byte
);
//处理数据
$
byte
= str_ireplace(
"<"
,
''
,$
byte
);
$
byte
= str_ireplace(
">"
,
''
,$
byte
);
$
byte
=pack(
"H*"
,$
byte
);
//16进制转换成二进制
PublicClass::CacheData(
''
,
'/upload/'
,$
byte
,
'.jpg'
);
//写入文件中!
|