PHP 断点续传范例

 客户端代码:
<?

$fn = 'http://avatar.csdn.net/4/E/E/3_amandaxy.jpg';
$size = 512;

$mch = curl_multi_init ();
$conn = array ();
$url = 'http://localhost/lianxi/curl_server.php';

$fp = fopen($fn, 'rb');
$i = 0;
while(! feof($fp)) {
  $post = array(
  'id' => $i,
  'name' => basename($fn),
  'offset' => ftell($fp),
  'data' => base64_encode(fread($fp, $size)),
  );
  $conn[$i] = curl_init ( $url );
  curl_setopt( $conn[$i], CURLOPT_POST, true );
  curl_setopt( $conn[$i], CURLOPT_POSTFIELDS, $post );
  curl_setopt ( $conn[$i], CURLOPT_RETURNTRANSFER, true );
  curl_multi_add_handle ( $mch, $conn[$i] );
  $i++;
}

$running = NULL;
do {
  curl_multi_exec ( $mch, $running );
} while ( $running > 0 );

foreach ( $conn as $i => $v ) {
  print_r(curl_multi_getcontent($v));
  curl_close ( $conn[$i] );
}

curl_multi_close ( $mch );



?>

服务端代码:

<?




print_r($_POST);//应答
 
$type = file_exists($_POST['name']) ? 'rb+' : 'wb';
$fp = fopen($_POST['name'], $type);
fseek($fp, $_POST['offset']);
fwrite($fp, base64_decode($_POST['data']));
fclose($fp);
?>

记得改目录的写权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值