PHP POST接收處理 IOS上傳NSData圖片數據,上傳圖片到服務器

【IOS 接收PHP 圖片】php

1,PHP將圖片的URL直接返回給IOS端便可,IOS獲取到URL處理,下載緩存就能夠在APP端使用了。編程

 

【IOS上傳圖片PHP接收】緩存

一、IOS上傳圖片可能有不少方法,今天做者我用了這種方法,經過IOS 提交NSData 數據,PHP接收而且處理後生成圖片服務器

不少人會問,NSData 傳過來是這樣的:app

<ffd8ffe0 00104a46 49460001>

那麼問題來了:這是什麼數據類型?函數

答:」我開始也這麼問,可是通過我查詢了1天的資料,瞭解,他是16進制的編碼,其實編程人員一看就知道。0-F,16進制編碼,ui

可是我有點不太確定,因此仍是想去確認一下。搜索了1天的資料後,終於認同了。16進制的「this

二、16進制,咱們是不能直接寫成圖片的?‍編碼

對啊,咱們得將16進制轉換成二進制,纔可以寫出去,再途中,不要複製出來。由於數據類型一旦複製到了TXT中。再進行,就有可能出錯。編碼這個問題。我是比較煩。spa

三、咱們須要的就是查詢本身語言16進制轉成二進制的方法。

PHP中。有個方法。能夠轉成咱們須要的二進制。方法詳細查詢去W3C pack()函數詳細說明 

 $byte=pack("H*",$byte);

 而後經過PHP寫出文件就能夠了。保存格式確定是"png  jpg 等圖片格式";

注意:

<ffd8ffe0 00104a46 49460001>

這個是NSData,  咱們須要處理成:ffd8ffe000104a4649460001  而後進行轉碼

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

【2016-5-28】

第二種方式!2016-5-28代碼    固然!第二種方式,是最新的方式!【Base64方式解碼寫出文件】

$path 		=	C('APP_HEADIMG_PATH'); //服務器相對路徑
			$rel_path 	=	ROOT_PATH.$path;//服務器絕對路徑
			$suffix 	=	C('suffix');
			$picname 	=	'uid_'.$this->param['user_id'];//圖片名稱
			$filename 	=	$rel_path.$picname.$suffix;//圖片生成絕對路徑
			$server_path=	$_SERVER["HTTP_HOST"].'/'.$path.$picname.$suffix;

			if(!file_exists($rel_path)){
				mkdir($rel_path,0777,true);
			}
			
			file_put_contents($filename,base64_decode($this->param['head']));//寫出文件到服務器

 

 

【做者:若是以爲我寫的不錯。請收藏我!關注我!】

相關文章
相關標籤/搜索