本文实例讲述了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程序设计有所帮助。