php发送与接收流文件的方法

时间:2022-08-30 10:41:11

本文实例讲述了php发送与接收流文件的方法。分享给大家供大家参考。具体如下:

sendStreamFile.php 把文件以流的形式发送
receiveStreamFile.php 接收流文件并保存到本地

sendStreamFile.php文件:

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

receiveStreamFile.php文件:

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

下面是其它网友的补充

PHP读取流文件

?
1
2
3
4
5
6
7
8
9
10
11
$filepath = 'http://www.vip.com/down';
$fp = fopen($filepath,"r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Content-Disposition: attachment; filename=xxx.pdf");
$buffer = 1024;
while (!feof($fp)) {
$file_con = fread($fp,$buffer);
  echo $file_con;
}
fclose($fp);

希望本文所述对大家的php程序设计有所帮助。