文件流

来源:互联网 发布:java 发送邮件带图片 编辑:程序博客网 时间:2024/06/05 07:41


什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。如果你对流的操作非常熟练,在程序中利用流的方便性,写起程序会大大提高效率的。


########################################################################


php 发送与接收流文件

sendStreamFile.php 把文件以流的形式发送

receiveStreamFile.php 接收流文件并保存到本地


sendStreamFile.php

[php] view plaincopyprint?
  1. <?php  
  2. /** php 发送流文件 
  3. * @param  String  $url  接收的路径 
  4. * @param  String  $file 要发送的文件 
  5. * @return boolean 
  6. */  
  7. function sendStreamFile($url$file){  
  8.   
  9.     if(file_exists($file)){  
  10.   
  11.         $opts = array(  
  12.             'http' => array(  
  13.                 'method' => 'POST',  
  14.                 'header' => 'content-type:application/x-www-form-urlencoded',  
  15.                 'content' => file_get_contents($file)  
  16.             )  
  17.         );  
  18.   
  19.         $context = stream_context_create($opts);  
  20.         $response = file_get_contents($url, false, $context);  
  21.         $ret = json_decode($response, true);  
  22.         return $ret['success'];  
  23.   
  24.     }else{  
  25.         return false;  
  26.     }  
  27.   
  28. }  
  29.   
  30. $ret = sendStreamFile('http://localhost/fdipzone/receiveStreamFile.php''send.txt');  
  31. var_dump($ret);  
  32. ?>  


receiveStreamFile.php

[php] view plaincopyprint?
  1. <?php  
  2. /** php 接收流文件 
  3. * @param  String  $file 接收后保存的文件名 
  4. * @return boolean 
  5. */  
  6. function receiveStreamFile($receiveFile){  
  7.   
  8.     $streamData = isset($GLOBALS['HTTP_RAW_POST_DATA'])? $GLOBALS['HTTP_RAW_POST_DATA'] : '';  
  9.   
  10.     if(empty($streamData)){  
  11.         $streamData = file_get_contents('php://input');  
  12.     }  
  13.   
  14.     if($streamData!=''){  
  15.         $ret = file_put_contents($receiveFile$streamData, true);  
  16.     }else{  
  17.         $ret = false;  
  18.     }  
  19.   
  20.     return $ret;  
  21.   
  22. }  
  23.   
  24. $receiveFile = 'receive.txt';  
  25. $ret = receiveStreamFile($receiveFile);  
  26. echo json_encode(array('success'=>(bool)$ret));  
  27. ?>  


########################################################################


这个还真不是一二句话能说得明白的,只能说一下我个人理解,所谓文件流,是指在通过HTTP协议POST或GET数据的过程中,传输一方直接以二进制流方式传送某个文件的内容,这样就形成了一条文件流,接收方只要将接收的流内容直接写进文件就可.



0 0
原创粉丝点击