PHP POST接收处理 IOS上传NSData图片数据,上传图片到服务器

情到浓时终转凉″ 提交于 2019-12-05 14:23:22

【IOS 接收PHP 图片】

1,PHP将图片的URL直接返回给IOS端即可,IOS获取到URL处理,下载缓存就可以在APP端使用了。

 

【IOS上传图片PHP接收】

1、IOS上传图片可能有很多方法,今天作者我用了这种方法,通过IOS 提交NSData 数据,PHP接收并且处理后生成图片

很多人会问,NSData 传过来是这样的:

<ffd8ffe0 00104a46 49460001>

那么问题来了:这是什么数据类型?

答:”我开始也这么问,但是经过我查询了1天的资料,了解,他是16进制的编码,其实编程人员一看就知道。0-F,16进制编码,

但是我有点不太肯定,所以还是想去确认一下。搜索了1天的资料后,终于认同了。16进制的“

2、16进制,我们是不能直接写成图片的?‍

对啊,我们得将16进制转换成二进制,才能够写出去,再途中,不要复制出来。因为数据类型一旦复制到了TXT中。再进行,就有可能出错。编码这个问题。我是比较烦。

3、我们需要的就是查询自己语言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']));//写出文件到服务器

 

 

【作者:如果觉得我写的不错。请收藏我!关注我!】

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!