注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

PHP如何接收JS发送上来的二进制类型的数据  

2010-06-03 11:37:00|  分类: Web技术-Php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
PHP如何接收JS发送上来的二进制类型的数据

?????? WEB APPLICATION中(PHP如何获取二进制数据),数据以二进制流的方式传输是很常见的。比如现在HTML5所推宠的直接把文件托放到browser里,就可以上传文件了(GMAIL早已实现了这一点,据说163也已实现了)那么它们的方式就是以二进制形式来upload 文件的。(实际,FALSE采用POST方式提交数据与PHP交互时也是这样的)
一般我们在client端可以看到类似于这样的代码(js):
? JS:
  1. function?FileUpload(img,?file)?{??
  2. ??this.ctrl?=?createThrobber(img);??
  3. ??var?xhr?=?new?XMLHttpRequest();??
  4. ??this.xhr?=?xhr;??
  5. ????
  6. ??var?self?=?this;??
  7. ??this.xhr.upload.addEventListener("progress",?function(e)?{??
  8. ????????if?(e.lengthComputable)?{??
  9. ??????????var?percentage?=?Math.round((e.loaded?*?100)?/?e.total);??
  10. ??????????self.ctrl.update(percentage);??
  11. ????????}??
  12. ??????},?false);??
  13. ????
  14. ??xhr.upload.addEventListener("load",?function(e){??
  15. ??????????self.ctrl.update(100);??
  16. ??????????var?canvas?=?self.ctrl.ctx.canvas;??
  17. ??????????canvas.parentNode.removeChild(canvas);??
  18. ??????},?false);??
  19. ????
  20. ??xhr.open("POST",?"http://www.exploe.com/test.php");??
  21. ??xhr.overrideMimeType('text/plain;?charset=x-user-defined-binary');??
  22. ??xhr.sendAsBinary(file.getAsBinary());??
  23. }?
那么,问题在于服务器端如何获取前端所发上来的数据呐?如果服务器端用的是PHP,那么可以通过如下方式来获取:
? PHP:(方法很简单,但讲清楚却不简单)

//方法一
$s = $GLOBALS['HTTP_RAW_POST_DATA'];
file_put_contents('d:/t.jpg',$s);
VAR_dump($s);

//方法二
$s = file_get_contents("php://input");
var_dump($s);

另注:

关于JS前端说明详见: http://www.jsmix.com/

关于php的输入输出流(input/outinput),详见:

PHP官网关于输入输出流(input/outinput):??????????

? 聆星的PHP空间???
  评论这张
 
阅读(334)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017