php接受二进制图片并保存实例

  1. 方法一:  
  2. <?php  
  3. $GLOBALS[‘HTTP_RAW_POST_DATA’]  
  4. 最近在做Flash在线裁剪图片 生成图片的东西。  
  5. 通过Flash POST 图片的二进制数据给php,由php生成图片保存。  
  6.   
  7. 开始想到用$_POST来接受。后来发现行不通。  
  8. 查阅了很多资料 明白了所以然,这里做一个笔记:  
  9.   
  10. 于PHP默认只识别application/x-www.form-urlencoded标准的数据类型。  
  11. 因此,对型如text/xml 或者 soap 或者 application/octet-stream 之类的内容无法解析,如果用$_POST数组来接收就会失败!  
  12. 故保留原型,交给$GLOBALS[‘HTTP_RAW_POST_DATA’] 来接收。  
  13.   
  14. 另外还有一项 php://input 也可以实现此这个功能  
  15.   
  16. php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input和 $HTTP_RAW_POST_DATA 不能用于 enctype=”multipart/form-data”。  
  17.   
  18. 我在Flash中使用JPGEncoder把BitMapData转成二进制,然后post给php  
  19.   
  20. php页面代码如下:  
  21.   
  22. <?php  
  23. $filename=“teststream.jpg”;//要生成的图片名字  
  24.   
  25. $xmlstr =  $GLOBALS[HTTP_RAW_POST_DATA];  
  26. if(empty($xmlstr)) $xmlstr = file_get_contents(‘php://input’);  
  27.   
  28. $jpg = $xmlstr;//得到post过来的二进制原始数据  
  29. $file = fopen(“cache/pic/”.$filename,“w”);//打开文件准备写入  
  30. fwrite($file,$jpg);//写入  
  31. fclose($file);//关闭  
  32.   
  33. 方法二:单张上传  
  34. /*  $target_path    =   “D:/wamp/www/strategy_www/uploads/products/”;//接收文件目录 
  35.     $name           =   “userfile”; 
  36.     if($_FILES[$name][‘name’]!=”) 
  37.     { 
  38.         $target_path    =   $target_path . basename( $_FILES[$name][‘name’]);   
  39.         if(move_uploaded_file($_FILES[$name][‘tmp_name’], $target_path))  
  40.         {   
  41.            //echo basename( $_FILES[$name][‘name’]); 
  42.            echo “success”; 
  43.         }  else{   
  44.            //echo $_FILES[$name][‘error’];  
  45.            echo “false”;  
  46.         }   
  47.     }*/  
  48.   
  49. 方法三:多张上传  
  50.     for($i=1;$i<=5;$i++)  
  51. {  
  52.     //$target_path  =   “D:/wamp/www/strategy_www/uploads/products/”;//接收文件目录  
  53.     $target_path    =   “D:/wamp/www/strategy_www/uploads/products/”;//接收文件目录  
  54.     $name           =   “userfile”.$i;//文件名称  
  55.     if($_FILES[$name][‘name’]!=)  
  56.     {  
  57.         $target_path    =   $target_path . basename( $_FILES[$name][‘name’]);    
  58.         if(move_uploaded_file($_FILES[$name][‘tmp_name’], $target_path))   
  59.         {    
  60.            //echo basename( $_FILES[$name][‘name’]);  
  61.            echo “success”.$i;  
  62.         }  else{    
  63.            //echo $_FILES[$name][‘error’];   
  64.            echo “false”.$i;   
  65.         }    
  66.     }  
  67. }  
  68. ?>  

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

www.admin122.com 关注微信
24小时客服在线