【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'
);
//寫入文件中!
|